2014-05-25 83 views
0

我完全不知道爲什麼我的模型是空的,當我試圖提交這種形式只有一個字段,一個dropdownlistfor選定的值。ASP.NET MVC:爲什麼我的模型在HttPost上爲null?

Get的工作得很好,模型明確地不爲空。但每次我嘗試提交表單,模型始終是空,我不知道爲什麼在此刻:

型號:

[Required] 
public string SelectedOrderStatus { get; set; } 
public List<SelectListItem> OrderStatuses { get; set; } 

查看:

@model Webstore.Models.OrderViewModel 

@using (Html.BeginForm("Edit", "Order", FormMethod.Post)) 
{ 
    @Html.AntiForgeryToken() 
    @Html.HiddenFor(m => m.OrderId) 


    <div class="form-horizontal"> 
     <h4>Change Order Status for order: @Model.OrderId</h4> 

     <div class="form-group"> 
      @Html.LabelFor(model => model.Orderstatus, new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.DropDownListFor(model => model.SelectedOrderStatus, new SelectList(Model.OrderStatuses, "Value", "Text")) 
       @Html.ValidationMessageFor(model => model.SelectedOrderStatus) 
      </div> 
     </div> 

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

@section Scripts { 
    @Scripts.Render("~/bundles/jqueryval") 


} 

控制器

 [HttpPost] 
     public ActionResult Edit(Guid id, OrderViewModel model) 
     { 
      try 
      { 
       Order orderToEdit = _context.Orders.Find(id); 

       orderToEdit.Orderstatus = (Orderstatus)Enum.Parse(typeof(Orderstatus), model.SelectedOrderStatus); 

       _context.Entry(orderToEdit).State = EntityState.Modified; 
       _context.SaveChanges(); 

       return RedirectToAction("Index"); 
      } 
      catch 
      { 
       return View(); 
      } 
     } 

我會appreaciate很多,如果你能幫我在這裏!

商祺!

+0

您的模型(上部)未滿,因爲您有'model.Orderstatus'和'Model.OrderId' – whoah

+0

model.OrderStatus只是一個標籤。 model.SelectedOrderStatus是我想要的唯一值。 SelectedOrderStatus是Selectlist模型中的選定項目。訂單狀態。 – Assassin87

回答

1

嘗試檢查FormCollection collection是否有您需要的值。所以,你的Edit的方法將是這樣的:

public ActionResult Edit(Guid id, FormCollection collection) 
{ 
    // rest of logic here 
} 

可選,檢查Request[..],喜歡這裏:

public ActionResult Edit(Guid id) 
{ 
    var value1 = Request["SelectedOrderStatus"]; 
} 

當然,這並不像它應該是爲beatifull的解決方案,但有一些問題,模型致盲,我無法解決沒有休息的代碼。

+0

該請求行肯定有竅門,最後!這個問題litterally給我頭痛。 謝謝你這麼快回復!對此,我真的非常感激! – Assassin87

+0

不用客氣;) – whoah

相關問題