我有一个部分视图,我在索引页面上使用它来显示表单。当从索引页面上的下拉菜单中选择项目时,部分视图将加载相应的表单数据。我需要在提交时验证表单,但我不确定从控制器返回什么会在显示错误时正确加载页面。我的提交按钮目前在我的部分视图中。 (我尝试将提交移动到索引页面,但它没有从表单返回任何内容。)如果存在验证错误,则加载部分视图,但索引视图中的下拉菜单不会。我已经看到了这个问题的一些解决方案,但没有一个在这种情况下工作,可能是由于下拉。任何帮助是极大的赞赏。如果HTML有用,请告诉我,我在为这篇文章格式化时遇到了问题。
控制器:
public class PrinterSettingsController : Controller
{
public ActionResult Index()
{
ViewBag.Areas = db.Areas.ToList();
PopulateDocumentTypeViewBag();
return View();
}
public ActionResult AreaDocumentSettingsList(int areaId = 0)
{
PopulateDocumentTypeViewBag();
//get area, contains list of document settings
}
return PartialView("_AreaDocumentSettingsList", selectedArea);
}
[HttpPost]
public ActionResult AreaDocumentSettingsList(Area selectedArea)
{
if (IsPrinterValid(selectedArea.PrinterName) == false)
{
ModelState.AddModelError(string.Empty, "Incorrect printer path entered.");
}
if (ModelState.IsValid)
{
//do some stuff, save the new records to the database
db.Entry(originalAreaRecord).CurrentValues.SetValues(selectedArea);
db.SaveChanges();
//if everything saves fine, go to a different page
return RedirectToAction("Index", "Workorder");
}
//if there are errors -- this part needs to be changed -- show errors in partial view, but also display view it's nested inside of
return View("_AreaDocumentSettingsList", selectedArea);
}
答案 0 :(得分:0)
@ cshemby的链接很有用:Updating Partial Views with Unobtrusive AJAX in MVC 3
但我的问题最终是我将部分视图加载到带有javascript .changed事件的<div>
标记中。为了解决这个问题,我在局部视图的索引页面添加了@Html.RenderPartial
,并将下拉列表的值传回给我的控制器。这样我就可以重新加载整个页面,包括验证。