我正在尝试从控制器返回不同的视图。但是,尽管显示了正确的视图,但URL保持不变。
这是/Company/Create
视图中的表单。
@using (Html.BeginForm("Create", "Company", FormMethod.Post))
{
// Form here
}
基本上,表单和模型已提交给/Company/Create
操作。如果提交的模型有效,则我处理数据并使用
return View("Index");
正如我所说,显示的是正确的视图,但URL(地址栏)仍为http://.../Company/Create
我试过RedirectToAction("Index");
它也不起作用。而且我认为它不是一个很好的MVC实践。我有一个布局,公司视图使用RenderBody()
有什么想法吗?
感谢。
编辑:
这是我的行动方法,
[HttpPost]
public ActionResult Create(CompanyCreate model)
{
/* Fill model with countries again */
model.FillCountries();
if (ModelState.IsValid)
{
/* Save it to database */
unitOfWork.CompanyRepository.InsertCompany(model.Company);
unitOfWork.Save();
RedirectToAction("Index");
return View();
}
// If we got this far, something failed, redisplay form
return View(model);
}
答案 0 :(得分:3)
如果您想更改网址,则需要重定向到其他操作。
但是RedirectToAction不会立即重定向,但会返回RedirectToRouteResult
对象,这是ActionResult
个对象。
所以你只需要从你的行动中返回RedirectToAction
的结果:
[HttpPost]
public ActionResult Create(CompanyCreate model)
{
/* Fill model with countries again */
model.FillCountries();
if (ModelState.IsValid)
{
/* Save it to database */
unitOfWork.CompanyRepository.InsertCompany(model.Company);
unitOfWork.Save();
return RedirectToAction("Index");
}
// If we got this far, something failed, redisplay form
return View(model);
}