と の 2 つのプロパティを持つモデルがstring
ありIEnumerable<SomeModel>
ます。UiHint
forでeditortemplate を指定するstring
と適用されます。しかし、IEnumerable<SomeModel>
プロパティに指定しても何も起こりません。IEnumerable のために何か特別なことをする必要がありますか?
質問する
1715 次
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 に答える