2011-07-06 59 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感到困惑(...)謝謝! –