使用以下代碼:MVC5定製輔助不能識別模型類型在剃刀視圖
public static IHtmlString RatingDropdown<TModel, TValue>(
this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, TValue>> expression,
int start, int max, int? current)
{
var inputName = ExpressionHelper.GetExpressionText(expression);
var select = new TagBuilder("select");
select.MergeAttribute("name", inputName);
foreach (var rating in Enumerable.Range(start, max))
{
var option = new TagBuilder("option");
option.MergeAttribute("value", rating.ToString());
option.SetInnerText(rating.ToString());
if ((current ?? -1) == rating)
{
option.MergeAttribute("selected", "true");
}
select.InnerHtml += option.ToString();
}
return new HtmlString(select.ToString());
}
上面的代碼駐留在已被添加到〜/查看/根據需要的web.config的類的名稱空間,但我也試過在視圖中顯式使用@using語句。這兩者似乎都不重要。
當我嘗試在視圖中輸入代碼,我得到如下:
請注意,在智能感知窗口x
參數的類型 - TModel的。當我使用內置的HTML的一個助手,它正確地解決了我的看法的模型,像這樣:
在後一種情況下,智能感知適用於所有的車型的性能符合預期,但在前者會崩潰,大概是因爲intellisense無法確定x
的類型,因此無法解析該類型的屬性。爲什麼智能感知不選擇這些信息?
編輯:我貼我的解決方案,以下面的問題的解釋,而是因爲它是絕對不適用於某些情況下,它是不是一個真正的答案。這看起來像是一個視覺工作室的bug。
您添加的命名空間的配置文件後..你關閉你的所有意見,並重新打開? – JamieD77
當然可以。我嘗試關閉所有內容並重新打開,關閉VS並重新打開,刪除.vs目錄並重新打開等。 – Chris
可能有幫助:http://stackoverflow.com/questions/5109983/why-dont-my-html-helpers-have -intellisense –