2014-09-04 229 views
1

我控制器:ASP.NET MVC 5 HttpPost

[HttpGet] 
    public ActionResult ItemIndex() 
    { 

     List<Item> item = RepositoryFactory.Create<IItemRepository>().ItemList(); 

     return View(item); 
    } 
[HttpPost] 
    public ActionResult ItemIndex(FormCollection formCollection) 
    { 
     foreach(string key in formCollection.AllKeys) 
     { 
      Response.Write("Key" + key); 
      Response.Write(formCollection[key]); 


     } 
     return View(); 
    } 

並查看認爲:

@model List<Kev.Models.Item> 

<div style="font-family:Arial"> 
    @using (Html.BeginForm()) 
    { 
     @Html.ValidationSummary(true) 
     foreach (var item in Model) 
     { 
      @Html.LabelFor(m => item.Start) 
      @Html.EditorFor(m => item.Start) 
      @Html.ValidationMessageFor(m => item.Start) 
     } 

     <div class="form-group"> 
      <div class="col-md-offset-2 col-md-10"> 
       <input type="submit" value="Zapisz" class="btn btn-default" /> 
      </div> 
     </div> 
    } 
</div> 

庫擁有的DbContext與內部項目。 而我想要做的是在視圖中填充此文本框,並提交更改以使用此值更新現有數據庫。 我現在所做的是不工作的代碼,我甚至不能使這個HttpPost工作。 它在@foreach中彈出NullReferenceException類型,不知道如何解決這個問題。

+0

視圖或控制器異常到來? – 2014-09-04 17:06:39

+0

哦,我忘記傳遞一些東西來返回View();現在它不會拋出nullReference,但錯誤看起來像:傳入字典的模型項目類型'System.Data.Entity.DbSet'1 [Kev.Models.Item ]',但是這個字典需要一個'System.Collections.Generic.List'1 [Kev.Models.Item]'類型的模型項。 – Lubudubu1010 2014-09-04 17:09:41

+0

你是否在傳遞''列表''?確保 – 2014-09-04 17:10:47

回答

1

更改foreachfor循環是這樣的:

for(int i=0; i<Model.Count;i++) 
{ 
    @Html.LabelFor(m => Model[i].Start) 
    @Html.EditorFor(m => Model[i].Start) 
    @Html.ValidationMessageFor(m => Model[i].Start) 
} 

,改變你的動作參數形式FormCollectionList<Item>

[HttpPost] 
public ActionResult ItemIndex(List<Kev.Models.Item> model) 
{ 
    return View(); 
}