1
我有一個情況我需要在一個視圖模型編輯枚舉屬性:編輯IEnumerable的模型屬性在MVC視圖
public class ViewModel
{
public MyObj Obj { get; set; }
public IEnumerable<MyObj> MyObjs = new List<MyObj>();
}
我按照this後;控制器動作:
public ActionResult Index()
{
var viewModel = new ViewModel();
viewModel.Obj = new Obj() { Name = "0", Value = true };
var o1 = new MyObj() { Name = "1", Value = false };
var o2 = new MyObj() { Name = "2", Value = false };
viewModel.Objs = new List<Obj>() { o1, o2 };
return View(viewModel);
}
[HttpPost]
public ActionResult Index(ViewModel viewModel)
{
return View(viewModel);
}
索引視圖如下:
<% using (Html.BeginForm()) { %>
<table>
<tr>
<th>Name</th>
<th>Value</th>
</tr>
<%= Html.EditorFor(x => x.Objs) %>
</table>
<br />
<input type="submit" value="Submit" />
<% } %>
而在 「〜/查看/主頁/ EditorTemplates/Obj.ascx」 編輯模板:
<tr>
<td><%: Html.TextBoxFor(x => x.Name) %></td>
<td><%: Html.CheckBoxFor(x => x.Value) %></td>
</tr>
的問題是:瀏覽到索引,數據顯示出來。 POST和可枚舉數據消失。逐步瀏覽,視圖模型中的單數「Obj」仍然存在,因此它只是可消失的可枚舉數據。
我一直在盯着這個一段時間,如果有人能幫上忙,那就太棒了。
乾杯,
Tim。
我能夠在這篇文章中發現的唯一區別是使用「for」語句。這不會產生任何不同的HTML或任何不同的結果。 – Hanshan
您是否檢查過在您的視圖中生成的HTML?所有的Obj編輯器都有相同的名稱/編號嗎?它們應該使用索引器生成(即'') –
再次感謝您的幫助,Stephen。不幸的是,它們似乎是正確的 - 例如名稱=「MyObjs [0] .Name」和「MyObjs [1] .Name」 - 因此我不知道! – Hanshan