0

プロジェクトに ASP.NET MVC 5 を使用しています。MVC のモデル バインディング機能は気に入っていますが、javascript MVVM システムを使用しているためあまり使用していません。モデルバインダー。

しかし、複数の場所で複製する必要がある特定の入力に対して、HTML コードを何度も再利用していることに気付きました。

etcを使用して@Html.EditorFor、プロパティを指定する代わりに、特定のテンプレートを呼び出して小さなインライン スニペット エンジンのように使用する方法はありますか?

アップデート

皆さん、部分ビューを使用するという提案に行きましたが、少し変更しました。これが良い習慣であるかどうかを知りたいので、フィードバックのためにStackOverflowにソリューションを投稿したいと思いますが、今のところ答えを受け入れています。

4

2 に答える 2

1

独自のユーザー インターフェイスを使用できます。次の手順を実行します。

Views\Shared に移動し、[EditorTemplates] フォルダーを作成します。次に、型ごとに独自の *.cshtml ファイルを作成するか、UIHint 属性を作成します。たとえば、int 型の場合は次のように Int32.cshtml を作成します。

@model int?

@{
    int i;
    if (!Model.HasValue)
    {
        i = 0;
    }
    else
    {
        i = Model.Value;
    }

    var htmlAttributes = new RouteValueDictionary();
    if (ViewBag.@class != null)
    {
        htmlAttributes.Add("class", "form-control " + ViewBag.@class);
    }
    else
    {
        htmlAttributes.Add("class", "form-control");
    }

    if (ViewBag.placeholder != null)
    {
        htmlAttributes.Add("placeholder", ViewBag.placeholder);
    }
}

<div class="form-group@(Html.ValidationErrorFor(m => m, " has-error"))">
    @Html.LabelFor(m => m, new { @class = "control-label" })
    <div class="controls">
        @Html.TextBox(
            "",
            ViewData.TemplateInfo.FormattedModelValue,
            htmlAttributes)
        @Html.ValidationMessageFor(m => m, null, new { @class = "help-block" })
    </div>
</div>
于 2013-12-05T20:24:15.837 に答える
1

そのために部分ビューを使用できます。

于 2013-11-09T19:51:06.767 に答える