【发布时间】: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