【问题标题】:How to write a HtmlHelper extension method that renders a partial view?如何编写呈现局部视图的 HtmlHelper 扩展方法?
【发布时间】:2011-07-06 19:44:30
【问题描述】:

我需要创建一个HtmlHelperextension 来呈现自动完成功能。像这样的:

@Html.AutoCompleteFor(x => x.CustomerId);

问题是Html.RenderPartial(...)返回void,所以我的AutoCompleteFor方法也必须是void。但是 Razor 不会让它编译,因为 @Html.X 只有在 X 返回一个 Object 时才会编译。

我知道我可以通过调用这个来绕过这个问题:

@{ Html.AutoCompleteFor(x => x.CustomerId); }

但这会使我的代码看起来与@Html.EditorFor不一致

我需要从我的 HtmlHelper 中返回一个 PartialView

一些注意事项:

  • 我知道您可能认为这会以某种方式打破 MVC 模式,但 MVC 本身就是这样做的。 Html.EditorFor 将尝试查找视图并将其返回。
  • 我只是想这样做,因为我需要foreign-key 属性才能默认使用jQuery-AutoComplete。我无法告诉 MVC 将我的模板用于外键属性。

【问题讨论】:

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


    【解决方案1】:

    您应该调用Html.Partial,它返回一个HelperResult 对象,而不是直接写入页面。
    然后您可以将HelperResult 返回给调用者。

    从技术上讲,您也可以只使用return null,但这是一个非常愚蠢的想法。

    【讨论】:

    • 行得通!我对 Html.RenderPartial(...) 感到困惑,谢谢!
    猜你喜欢
    • 2010-10-27
    • 1970-01-01
    • 2011-05-24
    • 1970-01-01
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-23
    相关资源
    最近更新 更多