返回同一控制器的不同视图时,URL保持不变

时间:2012-06-30 17:41:06

标签: c# asp.net-mvc model-view-controller controller

我正在尝试从控制器返回不同的视图。但是,尽管显示了正确的视图,但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);
}

1 个答案:

答案 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);
}