我在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());
}
}
}
无论如何,当我尝试在表单上使用它时,它不会出现在intellisense中:
ex:<li>@Html.PartyDetailsField(Model.IdentifierConfiguration)</li>
但是,当相同的代码放在HtmlHelperExtensions文件中时,它可以正常工作。我甚至没有看到班级定义的差异。
是否有任何可以照亮这种情况的光线,或者我将不得不将它留在HtmlHelperExtensions类中。
答案 0 :(得分:2)
确保您已将定义此扩展方法的命名空间带入视图中的范围:
@using Matrix.Investigator.Website.Fields
或<namespaces>
的{{1}}标记(不是~/Views/web.config
),以便在所有Razor视图中全局显示。
显然,由于Razor页面中Visual Studio的Intellisense的麻烦,您可能需要关闭并重新打开视图才能选择它。无论如何,在视图中永远不会信任Visual Studio的Intellisense。相信你的直觉和知识。运行应用程序是验证结果的最佳方法。