【问题标题】:Can someone explain these lines of code?有人可以解释这些代码行吗?
【发布时间】:2012-06-15 09:50:26
【问题描述】:

我正在修复一些应用程序的错误,我需要帮助理解以下代码行:

这里, 查看:

@Html.RenderControlText("WFD_CONSENT")

控制器:

public static MvcHtmlString RenderControlText(this HtmlHelper htmlHelper, string controlType)
        {
            return htmlHelper.Action("ControlText", new { controlType = controlType });
        }

这里的参数controlType = "WFD_CONSENT"。 我无法理解htmlhelper.Action() 函数在这里做什么。 从逻辑上讲,这个函数RenderControlText() 应该从某个地方获取一些数据,但它看起来不像。我在这里陷入了死胡同。 这个方法RenderControlText() 应该获取一些我保存在某处的文本,并显示出来。

编辑:Action() 方法具有以下参数:动作名称和对象路由值? 第二部分是什么:new { controlType = controlType }?这个路由值有什么作用??

【问题讨论】:

    标签: asp.net-mvc-3


    【解决方案1】:

    我无法理解函数 htmlhelper.Action() 在这里做什么。

    查看 Phil Haack 的 following blog post,他在其中详细解释了子操作。

    Html.Action 助手基本上执行一个子动作。子动作是一个标准的控制器动作,除了它可以与主请求的执行并行呈现。

    Html.Action("SomeAction", "SomeController") 表示SomeAction 将在SomeController 上执行,并将此操作的执行结果呈现到输出。

    相比之下:Html.Action("SomePartial") 表示SomePartial 将直接呈现到输出,而不执行任何子控制器和动作。

    但在这两种情况下,所有处理都发生在单个客户端请求中。只是您拥有执行并呈现视图的主控制器操作,并且在此视图中,您使用 Html.Action 帮助器来实例化子控制器和操作(例如可以返回部分视图)和执行结果这个视图的一部分直接插入到输出中。

    【讨论】:

    • 这里这个重载用于Html.Action:Html.Action(string actionname,object RouteValues)。什么是路由值??
    • 它允许您将参数传递给子操作。例如,如果您的子操作定义如下:public ActionResult ControlText(string controlType) { ... },您可以像这样传递controlType 参数:htmlHelper.Action("ControlText", new { controlType = controlType })
    • 这一条评论帮了大忙!!
    猜你喜欢
    • 2021-12-06
    • 2016-08-17
    • 1970-01-01
    • 2020-06-14
    • 1970-01-01
    • 2021-04-07
    • 1970-01-01
    • 2022-12-16
    • 1970-01-01
    相关资源
    最近更新 更多