问题1号:
我已经开始学习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);
}
}
}
然后,我已经添加了自定义的HtmlHelper的命名空间的Web.Config
,像这样的
<namespaces>
<!--other namespaces-->
<add namespace="MvcTestz"/>
<!--other namespaces-->
</namespaces>
这样我就可以在Razor视图使用智能感知,但它的自定义助手didnt在一个视图中出现了(Home/View/About.cshtml)
因此,在另一个视图(Home/View/Index.cshtml)
我通过添加命名空间@using MvcTestz;
声明。
问题2号:
在Web应用程序执行的主页(Home/View/Index.cshtml)
表示无需渲染成HTML输入按钮文本。
在关于页面(Home/View/About.cshtml)
服务器生成错误。 (点击放大)
更新:
- 智能感知问题解决了,我不得不编辑在视图中Directory.SOLVED Web.Config中。
-
HtmlString
如果我想呈现一个HTML button.SOLVED应该被使用。
问题1:
剃刀的命名空间应该是在registred <system.web.webPages.razor>
web.config中节点:
<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));
}
尝试这样的事情,
为了您的扩展方法,使用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>