2011-07-06 61 views
1

我需要创建一个HtmlHelper扩展名来呈现自动完成。事情是这样的:如何编写呈现局部视图的HtmlHelper扩展方法?

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

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

我知道我可以通过调用这个,而不是回避这个问题:

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

但是,这将使我的代码看起来不符合@Html.EditorFor

我需要从我内返回PartialView的HtmlHelper

一些注意事项:

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

回答

1

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

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

+0

工作!我对Html.RenderPartial感到困惑(...)谢谢! –