2012-12-27 64 views
2

您好我想創建一個聲明Html幫助器內MVC部分頁面的方法,一切工作正常。但是當我想使用內置的Html擴展方法時,我看到沒有擴展方法。此外,我檢查了我的視圖的webconfig文件,以添加System.Web.Mvc.Html命名空間。一切都很好,但我不知道爲什麼它不起作用。Html擴展方法不能在MVC部分頁面訪問

任何意見將是有益的。

編輯:這裏是我的代碼:

@using WebVoter.ViewModel 
@using System.Web.Mvc.Html 

@helper GetVoteList(IList<VoteQuestionViewModel> voteQuestionList) 
{ 

    <div class="head-panel"> 
     @*For example ActionLink is not accessible here*@ 
     @Html.ActionLink(....); 

    </div> 
} 
+0

你能展示你的代碼嗎? –

+0

您是否添加了使用說明?類似於部分類,這需要在你的局部視圖中。 – BlueChippy

+0

你是否嘗試在視圖中明確使用? – tschmit007

回答

2

內部剃刀幫手你沒有參考HtmlHelper。你需要把它作爲參數從調用代碼:

@helper GetVoteList(HtmlHelper html, IList<VoteQuestionViewModel> voteQuestionList) 
{ 
    <div class="head-panel"> 
     @html.ActionLink(....) 
    </div> 
} 

,當你想從一些觀點把這個助手,你需要通過參考:

@GetVoteList(Html, ...) 

我個人一直喜歡將擴展方法寫入HtmlHelper類而不是使用這些內聯Razor助手。然後,他們將被用作標準幫手:

@Html.GetVoteList(...) 

優點是您不再受限於剃刀。擴展方法是視圖引擎不可知的,並且由於它們是C#代碼,因此轉換到其他視圖引擎的痛苦較小。另一個好處是可以對它們進行單元測試。

+0

+1:謝謝你Darin它的工作,但你能解釋爲什麼partial沒有任何參考HtmlHelper? – saber

+2

我從來沒有說過partials沒有提及HtmlHelper。部分和視圖確實可以引用HtmlHelper。我所說的是Razor內聯助手沒有提及HtmlHelper。我之所以不知道這個原因,你將不得不問MVC框架的設計者。我想這是因爲你知道,'Html'是ViewPage的一個屬性,但是Razor內聯幫助器被編譯爲一些靜態函數或者任何東西,並且不再有任何對包含頁面的引用。 –

+0

:D謝謝Darin。 – saber

0

有瀏覽文件夾下的web.config文件。你能修改這個配置嗎?