我认为这将是一项标准任务,但我遇到了很多困难,所以我寻求帮助。
我有一个下拉,我在我的视图中密集使用,现在我有很多@Html.DropDown()
具有相同的逻辑,我认为这是一个用自定义html扩展替换它的好地方。
而不是描述我的项目结构,我只是发布它的截图:
所以在HtmlExtensions.cs
中,我创建了一个方法,我认为我需要从网上的某个例子中查看。该方法如下所示:
public static MvcHtmlString YesNoNotApplicableDDown(this HtmlHelper html)
{
return MvcHtmlString.Create("<select class=\"YesNoNotApplicable\"> <option value=\"1\">Yes</option> <option value=\"2\">No</option><option value=\"3\">NotApplicable</option></select>");
}
然后我在web.config
下的Views
下添加名称空间:
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="MCSResources" />
<add namespace="MaintenanceCheckSystem.Utils.HtmlExtensions" />
</namespaces>
</pages>
事实上,我在开始时尝试使用和不使用项目名称,所以我也测试了这个:
<add namespace="Utils.HtmlExtensions" />
然后在我的一个观点中,我尝试@Html.Ye..
,但我没有得到任何提示,当我检查我的自定义方法时不存在。我不知道我是否遗漏了某些东西或者我做错了什么(也许两者都有),所以我怎样才能做到这一点?
答案 0 :(得分:1)
您可以尝试在web.config中注册此命名空间
<add namespace="MaintenanceCheckSystem.Utils" />
在视图中调用您的助手:
@HtmlExtensions.YesNoNotApplicableDDown()
答案 1 :(得分:1)
您的扩展类是公共静态方法吗?您的示例代码未显示类定义。
这是requirements for extension methods之一。
你说你已经添加了这样的命名空间:
<add namespace="Utils.HtmlExtensions" />
但这真的是命名空间吗?命名空间不仅仅是这样:
<add namespace="MaintenanceCheckSystem.Utils" />
classname不应包含在using语句中。
如果您在web.config中注册名称空间,也没有类名。
答案 2 :(得分:0)
写
@using MaintenanceCheckSystem.Utils.HtmlExtensions
你的.cshtml文件中的
UPD :@using MaintenanceCheckSystem.Utils