ASP.Net MVC中的RedirectToAction

时间:2014-03-14 08:33:44

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

我正在使用ASP.net MVC 4
我有一个控制器:

public class PersonController : Controller
{
    public ActionResult Edit(int id)
    {
        //todo something.........
    }

    [HttpPost]
    public ActionResult Edit(PersonModel model)
    {
        //todo something.........
        return RedirectToAction("Edit", model.Id); // => Okay
    }

    public ActionResult Create()
    {
        //todo something............
    }

    [HttpPost]
    public ActionResult Create(PersonModel model)
    {
        //todo something........

        return RedirectToAction("Edit", new { id = model.Id } ); //=>Okay
        //return RedirectToAction("Edit", model.Id); // => exception???, but Edit Action is Okay**
    }
}

2 个答案:

答案 0 :(得分:1)

我认为您有异常,因为RedirectToAction方法有6个签名,当您编写RedirectToAction("Edit", model.Id);时,它可以被视为字符串,并将搜索名为model.Id的控制器。 看看MSDN:RedirectToAction。希望它能帮到你

答案 1 :(得分:0)

默认情况下,MVC支持ID' ID'而不是' id'或任何其他:

在您的代码::

public ActionResult Edit(int id)
{
    //todo something.........
}

此处您已声明int id 因为那个::

return RedirectToAction("Edit", model.Id);

这不起作用。

如果您已将Edit操作声明为::

public ActionResult Edit(int ID)
{
    //todo something.........
}

然后你可以使用这个::

return RedirectToAction("Edit", new { @Id = model.Id } );