ASP.. NET MVC:为什么我的模型在HttPost上为空

本文关键字:HttPost 模型 我的 NET MVC 为什么 ASP | 更新日期: 2023-09-27 18:04:54

我完全不知道为什么我的模型是空的,当我试图提交这个表单只有一个字段,选择值的下拉列表。

Get工作得很好,而且Model绝对不是空的。但是每次我尝试提交表单,模型总是空的,我不知道为什么在那一刻:

模型:

[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();
            }
        }
如果你能帮我解决这个问题,我将非常感激!

问候!

ASP.. NET MVC:为什么我的模型在HttPost上为空

尝试检查FormCollection collection是否有您需要的值。所以你的Edit方法看起来像:

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

可选,检查Request[..],像这里:

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

当然,这不是一个美丽的解决方案,因为它应该是,但有一些问题与模型盲,我不能解决没有其余的代码。