【问题标题】:ASP.Net MVC: regarding RedirectToAction functionASP.Net MVC:关于 RedirectToAction 函数
【发布时间】:2017-06-02 11:28:05
【问题描述】:

假设我在控制器中有两个名为登录的操作

public ActionResult Login()    
{    
    return View();    
}    

[HttpPost]    
[ValidateAntiForgeryToken]    
public ActionResult Login(UserProfile objUser)     
{    
    if (ModelState.IsValid)     
    {    
    using(DB_Entities db = new DB_Entities())    
    {    
        var obj = db.UserProfiles.Where(a => a.UserName.Equals(objUser.UserName) && a.Password.Equals(objUser.Password)).FirstOrDefault();    
        if (obj != null)    
        {    
        Session["UserID"] = obj.UserId.ToString();    
        Session["UserName"] = obj.UserName.ToString();    
        return RedirectToAction("UserDashBoard");    
        }    
    }    
    }    
    return View(objUser);    
}   

当我们写 return RedirectToAction("Login");那么asp.net mvc如何理解我们正在考虑登录功能,即uisng获取http动词登录而不是发布http动词登录? 谁能解释一下?

我们如何重定向到基于 post http 动词的动作? 如果我们使用 RedirectToAction 函数需要重定向到带有 http 动词的动作,语法是什么?

谢谢

【问题讨论】:

  • 重定向响应总是导致浏览器向重定向地址发出GET 请求。如果您希望浏览器发出 POST 请求,您可能会通过提交表单从客户端代码执行此操作。
  • From msdn.microsoft.com/en-us/library/…, "...向浏览器返回一个 HTTP 302 响应,导致浏览器向指定的操作发出 GET 请求..."
  • 如何从另一个获取或发布操作中调用发布操作。我们将调用的 post 操作将向客户端返回一个视图。那么有什么内置函数可以用来调用 post action 吗?
  • 你可以使用 HTTP 客户端:stackoverflow.com/a/15176685/1662459
  • RedirectToAction 总是指向http get。

标签: c# asp.net-mvc


【解决方案1】:

您可以像这样以不同的方式使用上述操作。

[HttpPost]    
[ValidateAntiForgeryToken]    
public ActionResult Login(UserProfile objUser)     
{    
    // Code;    
}   

[HttpGet]    
[ValidateAntiForgeryToken]    
public ActionResult Login(UserProfile objUser)     
{    
    // Code;    
}  

【讨论】:

    猜你喜欢
    • 2020-11-16
    • 1970-01-01
    • 1970-01-01
    • 2021-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-07
    相关资源
    最近更新 更多