我對MVC相當陌生,但自從1.1以來一直使用.NET。我有這個非常混亂的問題,我不明白我做錯了什麼。它與創建我自己的HtmlHelper類有關。無法讓我的MVC擴展HtmlHelper類正常工作(錯誤:嘗試明確指定類型參數)
- 我正在MVC 5.1
- 剃刀
- 我檢查了web.config文件看起來創建一個測試項目
- 我重新發行一個完全新的項目是正確的,使確保沒有錯的一個,我一直在
我已經基本上按行進行了。
這是來自我的測試項目。這是我在App_Code文件夾中的助手類。
namespace Test2.MyHtmlHelper
{
public static class HtmlExtensions
{
public static MvcHtmlString TestEditorFor(this HtmlHelper htmlHelper, string expression)
{
return new MvcHtmlString("test");
}
public static MvcHtmlString TestHelperFor<TModel, TProperty>(this HtmlHelper htmlHelper, Expression<Func<TModel, TProperty>> expression)
{
return new MvcHtmlString("test2");
}
}
}
這是我CSHTML:
@model Test2.Area
@using Test2.MyHtmlHelper
@using (Html.BeginForm())
{
<div class="form-horizontal">
<div class="form-group">
@Html.EditorFor(model => model.name, new { htmlAttributes = new { @class = "form-control" } })
@Html.TestEditorFor("test") @*--works*@
@Html.TestEditorFor(model => model.Name) @*--error*@
@Html.TestHelperFor(b => b.name) @*--error*@
</div>
</div>
}
所以兩個問題。第一個是與下面的代碼行:
@ Html.TestHelperFor(B => b.name)
The type arguments for method 'Test2.MyHtmlHelper.HtmlExtensions.YourGenericHelperFor<TModel,TProperty>(System.Web.Mvc.HtmlHelper, System.Linq.Expressions.Expression<System.Func<TModel,TProperty>>)' cannot be inferred from the usage. Try specifying the type arguments explicitly.
我認爲這反映是應該自動地發現這一點,所以你不」不得不明確地輸入參數。它甚至在指南中這樣說:「正如你所看到的,Html Helper不知道模型類是如何構建的,它只是知道它通過參數表達一個表達式,我們將通過反射該屬性及其值「。
第二個問題是,只要我用我的幫助器方法引用模型的lambda表達式,就沒有參考。使用@ Html.TestEditorFor(model => model.Name),當我檢查模型上的智能感知時,它會顯示「(參數)?模型」。但與@ Html.EditorFor它說「區域模型」,這是正確的。我想這與我的方法有關,不知道接受什麼,但是再一次,如果不能自動處理?
感覺像一個noob,但已經花了一個下午試圖解決這個問題,我即將放棄現在,只是解決它。
看來你的鏈接斷開(找不到網頁)「我使用以下指南:」 – sakir 2015-02-23 19:07:16
謝謝。鏈接更新爲正確的一個:http://patrickdesjardins.com/blog/inline-razor-helper-instead-of-html-helper-for-you-asp-net-mvc-website – Sami 2015-02-23 19:26:58