2

問題1:

ASP.NETMVCの学習を開始しました。私は次のような簡単な拡張メソッドを作成しました。

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

次にWeb.Config、このように、カスタムHtmlHelperの名前空間をに追加しました

  <namespaces>
    <!--other namespaces-->
    <add namespace="MvcTestz"/>
    <!--other namespaces-->
  </namespaces>

かみそりのビューでインテリセンスを使用できるようにしましたが、カスタムヘルパーが1つのビューに表示されませんでした(Home/View/About.cshtml)

ここに画像の説明を入力してください

したがって、別のビューでは、ステートメント(Home/View/Index.cshtml)ごとに名前空間を追加しました。@using MvcTestz;

問題2:

WebAppを実行すると、ホームページ(Home/View/Index.cshtml)に入力ボタンのテキストがHTMLにレンダリングされずに表示されます。

ここに画像の説明を入力してください [バージョン情報]ページで、(Home/View/About.cshtml)サーバーはエラーを生成します。(クリックして拡大) ここに画像の説明を入力してください

アップデート:

  1. Intellisenseの問題は解決しました。ビューディレクトリにあるWeb.Configを編集する必要がありました。解決しました。
  2. HtmlStringHTMLボタンをレンダリングしたい場合に使用する必要があります。解決しました。
4

2 に答える 2

9

問題1:

Razor名前空間は<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));
}
于 2012-08-10T07:17:59.787 に答える
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>
于 2012-08-10T07:30:57.150 に答える