2011-03-26 42 views
0

我有一個asp.net mvc 3剃刀網站。我有一個網頁,以如下形式顯示來自數據庫的數據列表:形式的主鍵在後回?

<input type="text" name="blah1" value="blah" /> 
<input type="text" name="blah2" value="blahblah" /> 
<input type="text" name="blah3" value="blahblah" /> 

上面的每一行都與主鍵相關聯。當用戶點擊提交併將FormCollection回發給控制器時,我該如何獲取每個等值線的主鍵?是否爲包含該行主鍵的每行添加一個隱藏字段?如果是這樣,我怎樣才能知道它與哪個關聯,因爲FormCollection只是一個字典?

回答

0

我將使用視圖模型建議您:

public class MyViewModel 
{ 
    public string Id { get; set; } 
    public string Text { get; set; } 
} 

,然後在你的控制器動作,你會發送這些模型視圖列表:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     var model = new[] 
     { 
      new MyViewModel { Id = "1", Text = "blah" }, 
      new MyViewModel { Id = "2", Text = "blahblah" }, 
      new MyViewModel { Id = "3", Text = "blahblah" }, 
     }; 
     return View(model); 
    } 

    [HttpPost] 
    public ActionResult Index(IEnumerable<MyViewModel> model) 
    { 
     // Here you will get a collection of id and text for each item 
     ... 
    } 
} 

,你可以在視圖使用的ID隱藏字段和值文本框:

@model IEnumerable<MyViewModel> 
@using (Html.BeginForm()) 
{ 
    @Html.EditorForModel() 
    <input type="submit" value="OK" /> 
} 

和correspondin g編輯器模板(~/Views/Shared/EditorTemplates/MyViewModel.cshtml):

@model MyViewModel 
@Html.HiddenFor(x => x.Id) 
@Html.TextBoxFor(x => x.Text)