具有相同签名的ASP.NET MVC 1.0控制器操作

时间:2010-02-02 18:14:51

标签: asp.net-mvc

所以基本上在我的UserController.cs类中,我有一个Index方法,它返回ActionResult以显示用户的仪表板。在这个页面上是一个带有提交类型的html按钮。当我点击此按钮时,我想在服务器端捕获它,将用户输出。

我怎么能这样做,因为我没有传回信息,方法签名最终也是一样。

谢谢,

麦克

    [Authorize]
    public ActionResult Index()
    {
        return View();
    }

    [Authorize]
    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Index()
    {
        FormsAuthentication.SignOut();
        return RedirectToAction("Index", "Home");
    }

3 个答案:

答案 0 :(得分:5)

使用ActionNameAttribute

[AcceptVerbs(HttpVerbs.Get), ActionName("Index"), Authorize]
public ActionResult IndexGet()
{
    return View();
}

[AcceptVerbs(HttpVerbs.Post), ActionName("Index"), Authorize]
public ActionResult IndexPost()
{
    FormsAuthentication.SignOut();
    return RedirectToAction("Index", "Home");
}

答案 1 :(得分:2)

使用:

[Authorize]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(FormCollection values)
{
    FormsAuthentication.SignOut();
    return RedirectToAction("Index", "Home");
}

或者

[Authorize]
[AcceptVerbs(HttpVerbs.Post), ActionName("Post")]
public ActionResult IndexPost()
{
    FormsAuthentication.SignOut();
    return RedirectToAction("Index", "Home");
}

答案 2 :(得分:1)

正如您在C#中所知,在同一个类中不能有两个具有相同名称和相同参数的方法。您可以添加一些虚拟参数,或者我建议您将第二个操作重命名为SignOut,这似乎在语义上更正确,更好地反映了此操作实际执行的操作。