1

我认为这将是一项标准任务,但我遇到了很多困难,所以我寻求帮助。

我有一个在我的视图中大量使用的下拉菜单,现在我有很多@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..但我没有得到任何提示,当我检查我的自定义方法时不存在。我不知道我是错过了什么还是做错了什么(可能两者兼而有之),那么我该如何做呢?

4

3 回答 3

1

您可以尝试在 web.config 中注册此命名空间

<add namespace="MaintenanceCheckSystem.Utils" />

并在视图中调用您的助手,例如:

@HtmlExtensions.YesNoNotApplicableDDown()
于 2013-05-23T09:10:49.227 回答
1

初步答案

您的扩展类是公共静态方法吗?您的示例代码不显示类定义。

这是扩展方法的要求之一。

更新

你说你已经像这样添加了命名空间:

<add namespace="Utils.HtmlExtensions" />

但这真的是命名空间吗?命名空间不就是这样吗:

<add namespace="MaintenanceCheckSystem.Utils" />

类名不应包含在 using 语句中。

如果您在 web.config 中注册命名空间,则类似,也没有类名。

于 2013-05-23T09:23:24.880 回答
0

@using MaintenanceCheckSystem.Utils.HtmlExtensions

在您的 .cshtml 文件中

更新@using MaintenanceCheckSystem.Utils

于 2013-05-23T09:05:17.093 回答