ASP.. NET MVC 5表单Post在没有处理动作的情况下重载页面

本文关键字:情况下 重载 处理 MVC NET 表单 Post ASP | 更新日期: 2023-09-27 18:13:21

我有一个大约有50个字段的表单,使用默认和DevExpress编辑器的组合。我还使用knockout将文本框值绑定到计算范围。页面呈现得很好,但当我试图发布保存更新时,控制器的post动作没有被击中,页面重新加载,旧值可见。

我不能发布确切的页面,但我可以发布一些片段。

Index.cshtml:

@using(Html.BeginForm())
{
    <b>Comapny:</b> @Html.Partial("_CompanyComboBox", Model)
    <br />
    @Html.Partial("_CompanyEditor", Model)
}

CompanyMonitoringController.cs:

[Route("CompanyMonitoring/{companyID:int?}")]
public ActionResult Index(int? companyID = null)
{
    var companies = this.CompanyRepository.GetCompanies().OrderBy(c => c.CoShtName);
    Company selectedComapny = companyID != null ? companies.Where(c => c.CompanyID == companyID).Single() : companies.First();
    CompanyModel model = new CompanyModel(this.CompanyRepository.GetCompany(selectedComapny.CompanyID));
    PopulateLists(model, companies);
    return View(model);
}
[HttpPost]
public ActionResult Index([ModelBinder(typeof(DevExpressEditorsBinder))]CompanyModel model)
{
     if (ModelState.IsValid)
     {
        this.CompanyRepository.SaveCompany(model.ToCompany());
        return RedirectToAction("Index", new { companyID = model.CompanyID });
      }
      PopulateLists(model);
      return View(model);
 }

ASP.. NET MVC 5表单Post在没有处理动作的情况下重载页面

我的一个同事回答了这个问题

  1. [HttpGet]添加到索引获取方法
  2. 添加[Route("CompanyMonitoring/{companyID:int?}")]]到Index post方法