使用以下代码: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 –