0

と の 2 つのプロパティを持つモデルがstringありIEnumerable<SomeModel>ます。UiHintforでeditortemplate を指定するstringと適用されます。しかし、IEnumerable<SomeModel>プロパティに指定しても何も起こりません。IEnumerable のために何か特別なことをする必要がありますか?

4

2 に答える 2

0

あなたの質問を正しく理解している場合は、あなたを に置き換えてから、次のアプローチを使用する必要がありIEnumerableますIList

public class OrderDTO
{
    ...
    public IList<OrderLineDTO> Lines { get; set; }
    ...
}

public class OrderLineDTO
{
    public int ProductID { get; set; }
    ...
    [Range(0, 1000)]
    public int Quantity { get; set; }
    ...
}

...
@for (int i = 0; i < Model.Lines.Count; ++i)
{
  ...
  @Html.EditorFor(x => x.Lines[i].Quantity)
  ...
}
...

MVC 4 で動作します。

于 2012-07-14T21:03:08.917 に答える
0

HintTemplate モデルは次のようになりますIEnumerable<SomeModel>(エディター テンプレートでモデルを反復します)。または、UIHint 注釈の代わりに、コレクション プロパティで EditorFor を使用できます (この場合、EditorTemplate モデルは SomeModel になります。ビュー構文に含まれる反復はありません)。この投稿で同様の返信を提供しました

モデルが次のように見える場合

public class TestModel
{
    public string ParentName { get; set; }
    [UIHint("HintTemplate")]
    public IEnumerable<TestChildModel> children { get; set; }
}

子モデル

public class TestChildModel
{
    public int id { get; set; }
    public string ChildName { get; set; }
}

HintTemplate.cshtml は次のようになります。

@model IEnumerable<MVC3.Models.TestChildModel>

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <title>HintTemplate</title>
</head>
<body>
    @foreach(var a in Model)
    {
    <div style="background-color:#4cff00">
        @Html.DisplayFor(m => a.ChildName)
        @Html.EditorFor(m => a.ChildName)
    </div>
    }
</body>
</html>

あなたの見解

@model MVC3.Models.TestModel

@{
    ViewBag.Title = "Test";
}

<h2>Test</h2>
<div>
    @Html.LabelFor(a => a.ParentName)
    @Html.EditorFor(a => a.ParentName)
</div>
<div>
    @Html.LabelFor(a => a.children)
    @Html.EditorFor(a => a.children)
</div>
于 2012-07-14T21:08:32.123 に答える