1

最初のMVCヘルパーメソッドを作成していますが、完全に取得できません。標準の「@Html.TextBoxFor」と同じコードを出力しますが、属性「title」とその値をモデルプロパティから取得します。これは私がこれまでに持っているものです。最後に標準の「TextBoxFor」を使用して独自の属性を追加しようとしていることがわかりますが、それはその方法ではないようです。

public static MvcHtmlString TextBoxForWithTitle<TModel, TProperty>(
    this HtmlHelper<TModel> htmlHelper,
    Expression<Func<TModel, TProperty>> expression)
{
    var metaData = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
    return htmlHelper.TextBoxFor(expression, new { @title = metaData.DisplayName });
}

具体的には、コンパイル時エラーが発生します。

'System.Web.Mvc.HtmlHelper<TModel>' does not contain a definition for 'TextBoxFor' and no extension method 'TextBoxFor' accepting a first argument of type 'System.Web.Mvc.HtmlHelper<TModel>' could be found (are you missing a using directive or an assembly reference?) D:\DevData\JWilliams\Code\Sandbox\URIntakeMVC2\URIntake\HtmlHelpers.cs  16  31  URIntake
4

1 に答える 1

7

TextBoxForは、名前空間に存在するクラスの拡張メソッドです。HtmlHelper<TModel>System.Web.Mvc.Html

usingまた、拡張メソッドを使用する場合は、ディレクティブを使用してその名前空間を明示的にインポートする必要があります。だからあなたは:を逃していusingます

using System.Web.Mvc.Html;

また、ここで拡張メソッドも作成していることを忘れないでください(TextBoxForWithTitle)。したがって、ビューで拡張メソッドを使用する場合はusing、独自のTextBoxForWithTitleメソッド名前空間も作成する必要があります。

@using URIntakeMVC2.URIntake
于 2013-02-13T20:54:45.623 に答える