0

我试图从我的控制器返回不同的视图。但是,尽管显示了正确的视图,但 URL 保持不变。

这是我的/Company/Create看法。

@using (Html.BeginForm("Create", "Company", FormMethod.Post)) 
{ 
 // Form here
}

所以基本上,表单和模型被提交到/Company/Create行动。如果提交的模型是有效的,那么我处理数据并重定向到 /Company/Index 视图

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);
}
4

1 回答 1

3

如果要更改 url,则需要重定向到另一个操作。

但是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);
}
于 2012-06-30T18:02:30.507 回答