Web.Config中添加的HtmlHelper命名空间不工作(Adding HtmlHelper

2019-09-21 02:45发布

问题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)服务器生成错误。 (点击放大)

更新:

  1. 智能感知问题解决了,我不得不编辑在视图中Directory.SOLVED Web.Config中。
  2. HtmlString如果我想呈现一个HTML button.SOLVED应该被使用。

Answer 1:

问题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));
}


Answer 2:

尝试这样的事情,

为了您的扩展方法,使用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>


文章来源: Adding HtmlHelper NameSpace in Web.Config does not work