2011-11-28 105 views
0

我在MVC3(C#)中創建一個自定義字段,我想用視圖中的Html屬性訪問它。我想把它放在自己的類中,這樣我就可以很好地組織代碼(私有方法等),因爲我們當前的Html擴展類太吵了。自定義Html字段擴展MVC3

這就是我要找的:

ex。 @Html.CustomField...

目前,我有這樣的代碼:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using Matrix.Investigator.Models.Parties; 
using Matrix.Investigator.Website.Extensions; 

namespace Matrix.Investigator.Website.Fields 
{ 
    public static class DetailsField 
    { 
    public static MvcHtmlString PartyDetailsField(this HtmlHelper helper, IEnumerable<IDetailsConfiguration> configuation) 
    { 
     . 
     . 
     . 

     [Some Code for the field] 

     return MvcHtmlString.Create([CODE FOR TAG].toString()); 
    } 
    } 
} 

無論如何,當我嘗試使用此表單上不拿出在智能感知:

例如:<li>@Html.PartyDetailsField(Model.IdentifierConfiguration)</li>

但是,當相同的代碼放在HtmlHelperExtensions文件中時,它工作得很好。我甚至沒有看到類定義的差異。

是否有任何光線可以照在這種情況下,或者我將不得不將它留在HtmlHelperExtensions類中。

回答

2

確保您帶來在此擴展方法是在您的視圖定義爲範圍的命名空間:

@using Matrix.Investigator.Website.Fields 

或在其<namespaces>標籤您~/Views/web.config(未~/web.config)中,使其範圍全球所有的剃刀視圖。

很明顯,由於Visual Studio在Razor頁面中的Intellisense的風俗習慣,您可能需要關閉並重新打開視圖才能選擇它。無論如何,永遠不要相信視圖中的Visual Studio的Intellisense。相信你的直覺和知識。運行應用程序是驗證結果的最佳方法。

+0

添加@using語句工作。但是,將其添加到web.config似乎沒有任何作用。這肯定會是一個更好的解決方案(以便我可以在其他地方重複使用該控件,而不必擔心忘記@using) –

+0

關閉視圖並再次打開後,效果很好。 –