0

MVC Web アプリケーション用に、より「高度な」エディター テンプレートを作成しようとしていますが、少し問題があります。説明する前に、私のソースコードをお見せしましょう。

これが私の見解のコードです(テンプレートを使用):

@Html.EditorFor(model => model.Height, "UnitTemplate", new { unitModel = Model.HeightUnit, unitType = Units.Distance })

テンプレートは次のとおりです。

@{
    Layout = null;
}
@using MyProject.Models;

@{
    var unitModel = this.ViewData["unitModel"];
    var unitType = this.ViewData["unitType"] as SelectList;
}

<div class="data-group">
    <div class="editor-label">
        @Html.LabelFor(model => model)
    </div>
    <div class="option1">
        @Html.TextBoxFor(model => model)
    </div>
    <div class="units">@Html.DropDownListFor(model => unitModel, unitType, new { @class = "unit" })</div>
    <div class="validation">
        <div>@Html.ValidationMessageFor(model => model)</div>
    </div>
</div>

ご覧のとおり、いくつかの値 (この場合は Height) があり、その値に関連付けられた単位タイプ (HeightUnit) もあります。モデルに関連付けられた単位値 (かなり多くの場所でこのテンプレートを使用しているため) と単位の種類 (これも変更される可能性があるため) を一般的に渡すことができるようにしたいと考えています。最終的には、ユーザーが値をすばやく変換できるようにすることが目標です。

幸いなことに、結果を保存するときに unitModel がデータベースに保存されないことを除いて、この時点まではすべて機能します (変換、人口など)。これを機能させるために私ができることについて誰か提案がありますか?

4

1 に答える 1

1

Heightこのテンプレートはメイン ビュー モデル (およびHeightUnit)の複数のプロパティに依存するため、この場合、モデル全体に​​エディター テンプレートを使用することをお勧めします。

@Html.EditorForModel("UnitTemplate")

次に、~/Views/Shared/EditorTemplates/UnitTemplate.cshtmlエディター テンプレートで:

@using MyProject.Models;
@model MyViewModel
@{
    Layout = null;
}
<div class="data-group">
    <div class="editor-label">
        @Html.LabelFor(model => model.Height)
    </div>
    <div class="option1">
        @Html.TextBoxFor(model => model.Height)
    </div>
    <div class="units">
        @Html.DropDownListFor(
            model => model.HeightUnit, 
            Units.Distance, 
            new { @class = "unit" }
        )
    </div>
    <div class="validation">
        <div>
            @Html.ValidationMessageFor(model => model.Height)
        </div>
    </div>
</div>
于 2011-05-05T15:26:19.433 に答える