2011-02-14 157 views
1

我試圖讓一個對象編輯器在ASP.net MVC 3,它看起來是這樣的:如何將關係數據綁定到ASP.net MVC中的模型?

<div class="editor-label"> 
    @Html.LabelFor(model => model.Name) 
</div> 
<div class="editor-field"> 
    @Html.EditorFor(model => model.Name) 
    @Html.ValidationMessageFor(model => model.Name) 
</div> 
<div class="editor-label"> 
    @Html.LabelFor(model => model.foo) 
</div> 
<div class="editor-field"> 
    @Html.EditorFor(model => model.foo) 
    @Html.ValidationMessageFor(model => model.foo) 
</div> 
@if (Model.Items.Count > 0) 
{ 
<table>   
    @foreach (var ii in Model.Items) 
    { @Html.EditorFor(item => ii) } 
</table> 
} 

在這個例子中,項目是另一種對象的列表。問題是,當模型從視圖中被編輯回發時,數據更改爲Model.Items不存在,而數據更改爲Name和foo。我怎樣才能使它的項目數據綁定正確?

回答

2

模型類:

public class HomeControllerModel 
{ 
    public string Name { get; set; } 
    public string foo { get; set; } 
    public List<string> Items { get; set; } 

    public HomeControllerModel() 
    { 
     Items = new List<string>(); 
    } 
} 

控制器類:

public class HomeController : Controller 
{ 


    [HttpGet] 
    public ActionResult Index() 
    { 
     var model = new HomeControllerModel(); 
     model.Name = "LukLed"; 
     model.foo = "bar"; 
     model.Items.Add("AAA"); 
     model.Items.Add("BBB"); 
     model.Items.Add("CCC"); 
     return View(model); 
    } 

    [HttpPost] 
    public ActionResult Index(HomeControllerModel model) 
    { 
     return View(model); 
    } 

查看:

@using MvcApplication4.Controllers 
@model HomeControllerModel 
@{ 
    Layout = null; 
} 
<!DOCTYPE html> 
<html> 
<head> 
    <title>Index</title> 
</head> 
<body> 
    <div> 
     <form action="/Home/Index" method="post"> 
     <div class="editor-label"> 
      @Html.LabelFor(model => model.Name) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.Name) 
      @Html.ValidationMessageFor(model => model.Name) 
     </div> 
     <div class="editor-label"> 
      @Html.LabelFor(model => model.foo) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.foo) 
      @Html.ValidationMessageFor(model => model.foo) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.Items) 
     </div> 
     <input type="submit" value="Submit" /> 
     </form> 
    </div> 
</body> 
</html> 

你不必通過Items進行迭代。

+1

啊哈,就是這樣!非常感謝你。 – 2011-02-16 20:30:15