MVC应用程序在回发路径中缺少区域的区域

时间:2015-02-02 21:47:30

标签: c# asp.net asp.net-mvc

我正在使用我的MVC应用中的区域。我导航到我的CRUD表单页面:

/myarea/mycontroller/myaction/myid

表单包含来自viewmodel的正确数据。我的表单设置为以下列方式发布:

@using (Html.BeginRouteForm(
    "Default", 
    new { controller = "mycontroller", action = "myaction" }, FormMethod.Post)) 
{
    ... form data
}

表单发布到我的控制器:

    // GET: /myarea/mycontroller/myaction/myid
    [HttpPost]
    public ActionResult MyAction(MyViewModel model)
    {
        model.Save();

        if (ModelState.IsValid)
        {
            return RedirectToAction("list", "mycontroller", new { area = "myarea" });
        }
        else
        {
            return View(model);
        }
    }

我的视图模型中的数据将保存到我的数据库中。

但是,当我的ModelState无效且View返回到原始页面时,url中的路径缺少Area:

/mycontroller/myaction/myid

我在MVC设置中遗漏了什么?为什么"返回View(模型);"当我的路线在一个区域时,把我带到错误的路线?

1 个答案:

答案 0 :(得分:0)

我解决了自己的问题。而不是使用:

@using (Html.BeginRouteForm(
    "Default", 
    new { controller = "mycontroller", action = "myaction" }, FormMethod.Post)) 
{
    ... form data
}

我正在使用:

@using (Html.BeginForm("myaction", "mycontroller", new { area="myarea" }))
{
    ... form data
}