1

この質問が何度も出されたことは知っていますが、かなりの時間を無駄にしてしまったので、最終的に投稿することをお許しください。要約すると、いくつかの複合型プロパティと複合型リスト プロパティを持つビュー モデルがあります。

public class ViewModel
{
    public ViewModel()
    {
        Gains = new List<Gain>();

    }
    [UIHint("Common")]
    public AllRegRecordsLog commonRegisterFields { get; set; }
    public Potential Potential { get; set; }
    [UIHint("Gains")]
    public List<Gain> Gains { get; set; }

    public void CreateGains(int count = 1)
    {

        for (int i = 0; i < count; i++)
        {

            Gains.Add(new Gain());

        }


    }

}

今私のビュー createOrEdit 私はこのプロパティを

@Html.EditorFor(model => model.Gains)

特定のビュー フォルダー内にエディター テンプレートを配置しました

@model Gains
    table id="gainsTable" class="content-tables"style="width:98%">
    <tr id="defaultGainsRow">
            <td class="editor-label">
                @Html.LabelFor(model => model.VolumeGainLow)
            </td>
            <td class="editor-field">
                @Html.TextBoxFor(model => model.VolumeGainLow)
                @Html.ValidationMessageFor(model => model.VolumeGainLow)
            </td>

            </tr>

     <tr>
    <td colspan="4">
      <input id="addGainsButton"type="button" class="t-button" Value="Add Potential Gains"/>
    </td>
    </tr>
    </table>

しかし、どういうわけか、「ディクショナリに渡されたモデル項目は 'System.Collections.Generic.List ですが、ゲインが必要です」というエラーが表示されます

私はasp.Net MVC 4を使用しています

私を正しい方向に向けてください。

ありがとう

ビラル

4

3 に答える 3

1

助けてくれてありがとう私は次の投稿を使ってそれを解決します

http://ivanz.com/2011/06/16/editing-variable-length-reorderable-collections-in-asp-net-mvc-part-1/

于 2012-09-03T18:51:35.023 に答える
0

リストを取得し、その中でループ ロジックを実行するように editortemplate を変更します。

@model List<Gain>
@foreach(var gain in Model)
{
    table id="gainsTable" class="content-tables"style="width:98%">
    <tr id="defaultGainsRow">
            <td class="editor-label">
                @Html.LabelFor(gain=> gain.VolumeGainLow)
            </td>
            <td class="editor-field">
                @Html.TextBoxFor(gain=> gain.VolumeGainLow)
                @Html.ValidationMessageFor(gain=> gain.VolumeGainLow)
            </td>

            </tr>

     <tr>
    <td colspan="4">
      <input id="addGainsButton"type="button" class="t-button" Value="Add Potential Gains"/>
    </td>
    </tr>
    </table> 
}

編集:私のカミソリは100%ではないかもしれませんが、あなたはアイデアを得る

于 2012-08-30T06:01:30.033 に答える
0

ビューをタイプではなくプロパティにバインドされていると宣言しようとしているようです。これは不可能です。テンプレートを機能させるには、Web プロジェクトによって参照される有効な型としてモデルを宣言する必要があります。

Gainsプロパティの型List<Gain> . Since yourGains view has aGains type declared, yourUIHintAttribute` が無効です。

于 2012-08-30T06:02:50.360 に答える