[英]ASP.NET MVC: Why is my Model null on HttPost?
我完全不知道为什么当我尝试仅通过一个字段(用于选择值的下拉列表)提交此表单时,为什么我的模型为null。
Get正常工作,并且Model绝对不是null。 但是每次我尝试提交表单时,模型始终为空,现在我也不知道为什么:
模型:
[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();
}
}
如果您能在这里帮助我,我会非常感谢!
问候!
尝试检查FormCollection collection
是否具有所需的值。 因此,您的Edit
方法将如下所示:
public ActionResult Edit(Guid id, FormCollection collection)
{
// rest of logic here
}
(可选)签入Request[..]
,如下所示:
public ActionResult Edit(Guid id)
{
var value1 = Request["SelectedOrderStatus"];
}
当然,这并不是应有的令人满意的解决方案,但是模型盲化存在一些问题,如果没有其余代码,我将无法解决。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.