自定义Html字段扩展

本文关键字:扩展 字段 Html 自定义 | 更新日期: 2023-09-27 18:15:55

我在MVC3 (c#)中创建了一个自定义字段,我想在视图中使用Html属性访问。我想把它放在自己的类中,这样我就可以很好地组织代码(私有方法等),因为我们当前的Html Extensions类太吵了。

这就是我要找的:

交货。@Html.CustomField...

目前,我有这个代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Matrix.Investigator.Models.Parties;
using Matrix.Investigator.Website.Extensions;
namespace Matrix.Investigator.Website.Fields
{
  public static class DetailsField
  {
    public static MvcHtmlString PartyDetailsField(this HtmlHelper helper, IEnumerable<IDetailsConfiguration> configuation)
    {
      .
      .
      .
      [Some Code for the field]
      return MvcHtmlString.Create([CODE FOR TAG].toString());
    }
  }
}

无论如何,当我尝试在表单上使用这个时它不会出现在智能感知中:

ex: <li>@Html.PartyDetailsField(Model.IdentifierConfiguration)</li>

但是,当相同的代码放在HtmlHelperExtensions文件中时,它工作得很好。我甚至看不出类定义有什么不同。

是否有任何光,可以在这种情况下照射或我将不得不离开它在HtmlHelperExtensions类。

自定义Html字段扩展

确保您已将定义此扩展方法的名称空间带入视图的作用域:

@using Matrix.Investigator.Website.Fields

或在~/Views/web.config(而不是~/web.config)的<namespaces>标签中,将其纳入所有Razor视图的全局范围。

显然,由于Razor页面中Visual Studio的智能感知功能很糟糕,你可能需要关闭并重新打开视图才能让它选择它。无论如何,永远不要相信Visual Studio在视图中的智能感知。相信你的直觉和知识。运行应用程序是验证结果的最佳方法。