大家好我已经开始学习ASP.NET MVC,我已经做了一个简单的扩展方法,就像这样
namespace MvcTestz //Project is also named as "MvcTestz"
{
public static class SubmitButtonHelper //extension method.
{
public static string SubmitButton(this HtmlHelper helper,string buttonText)
{
return string.Format("<input type=\"submit\" value=\"{0}\">",buttonText);
}
}
}
然后我将Custom HtmlHelper的名称空间添加到Web.Config
,就像这样
<namespaces>
<!--other namespaces-->
<add namespace="MvcTestz"/>
<!--other namespaces-->
</namespaces>
因此我可以在剃须刀视图中使用intellisense,但是自定义助手没有出现在一个视图中(Home/View/About.cshtml)
。
所以在另一个视图中(Home/View/Index.cshtml)
我通过@using MvcTestz;
语句添加了命名空间。
在WebApp执行时,主页(Home/View/Index.cshtml)
显示输入按钮文本而不将其呈现为HTML。
在关于页面(Home/View/About.cshtml)
服务器生成错误。 (Click for Enlarged)
HtmlString
如果我想渲染一个Html按钮,应该使用.SOLVED。答案 0 :(得分:9)
问题1:
应该在web.config中的<system.web.webPages.razor>
节点中注册Razor名称空间:
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<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="MvcTestz"/>
</namespaces>
</pages>
</system.web.webPages.razor>
问题2:在帮助程序中使用HtmlString
而不是字符串:
public static HtmlString SubmitButton(this HtmlHelper helper, string buttonText)
{
return new HtmlString(string.Format("<input type=\"submit\" value=\"{0}\">", buttonText));
}
答案 1 :(得分:1)
尝试这样的事情,
对于您的扩展方法,请使用MvcHtmlString.Create
public static MvcHtmlString MySubmitButton(this HtmlHelper helper, string buttonText)
{
return MvcHtmlString.Create("<input type='submit' value='" + buttonText + "' />");
}
并包含您的参考资料,请参阅下文
<system.web.webPages.razor>
<namespaces>
<!- add here..... -->
<add namespace="MvcTestz"/>
</namespaces>
</system.web.webPages.razor>