【问题标题】:How can I use Html.Action?如何使用 Html.Action?
【发布时间】:2012-01-16 00:56:07
【问题描述】:

我正在尝试了解如何使用:

@Html.Action("GetOptions", )

我想做的是将调用传递给我的控制器并传递参数:

pk = "00" and rk = "00"

谁能解释我如何用 Html.Action 做到这一点

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3


    【解决方案1】:

    您应该查看Action 方法的文档;解释得很好。对于您的情况,这应该有效:

    @Html.Action("GetOptions", new { pk="00", rk="00" });
    

    controllerName 参数将默认为调用 Html.Action 的控制器。因此,如果您尝试从另一个控制器调用操作,则必须像这样指定控制器名称:

    @Html.Action("GetOptions", "ControllerName", new { pk="00", rk="00" });
    

    【讨论】:

    • 请告诉我什么是GetOptions?是动作方法吗?
    • 是的,它是一个动作方法名称。我链接的文档更详细地解释了。
    • “解释的很好”?!你在开玩笑吗?!我认为这不能更愚蠢地解释! MS 帮助说“使用指定的参数和控制器名称调用指定的子操作方法,并将结果作为 HTML 字符串返回。”实际上 HtmlHelper.Action() 是一种方法,而不是“调用”一种方法。此外,在 MVC 中称为“动作”的不是方法,而是 MVC 动作! HtmlHelper.Action() 不会“调用”此类 MVC 操作,此类调用的结果也不会作为 Html 字符串返回。 action 方法的结果是一个链接,它将调用指定的 MVC 操作。
    • 我猜提问者(Samantha J T Star)需要知道如何使用或使用 Html.Action 否则几乎每个人都知道如何为这个方法设置参数!通常MS文档没有解释清楚!!
    【解决方案2】:

    首先,创建一个类来保存您的参数:

    public class PkRk {
        public int pk { get; set; }
        public int rk { get; set; }
    }
    

    然后,使用Html.Action 传递参数:

    Html.Action("PkRkAction", new { pkrk = new PkRk { pk=400, rk=500} })
    

    并在控制器中使用:

    public ActionResult PkRkAction(PkRk pkrk) {
        return PartialView(pkrk);
    }
    

    【讨论】:

    • 什么是GetOptions?是动作方法吗?
    • 是的,GetOptions就是控制器中定义的方法。
    • 现在动作和参数的名称是有效的。
    【解决方案3】:

    另一种情况是http重定向。 如果您的页面将 http 请求重定向到 https,则可能是您的部分视图尝试自行重定向。

    它再次导致同样的问题。 对于这个问题,您可以重新组织您的 .net 错误页面或 iis 错误页面配置。

    只需确保您将请求重定向到正确的错误或未找到页面,并确保此错误页面包含无问题的部分。如果您的页面仅支持 https,请勿在不使用 https 的情况下将请求转发到错误页面,如果错误页面包含部分内容,则此部分内容会尝试与请求的 url 分开重定向,这会导致问题。

    【讨论】:

      猜你喜欢
      • 2021-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多