【发布时间】:2011-11-26 00:25:11
【问题描述】:
我从 _Layout.cshtml 视图多次调用同一个控制器。所以在这个控制器中,我如何在运行时发现它是否仍然是正在呈现的同一页面,或者是否正在发出全新的页面请求?
在 asp.net 中,您可以使用 ispostback 来解决这个问题。如何判断 MVC3 中的页面是否正在发出全新的请求?
谢谢
【问题讨论】:
我从 _Layout.cshtml 视图多次调用同一个控制器。所以在这个控制器中,我如何在运行时发现它是否仍然是正在呈现的同一页面,或者是否正在发出全新的页面请求?
在 asp.net 中,您可以使用 ispostback 来解决这个问题。如何判断 MVC3 中的页面是否正在发出全新的请求?
谢谢
【问题讨论】:
在 MVC 上没有这样的想法。您有可以处理 POST、GET 或两者的操作。您可以使用[HttpPost] 和[HttpGet] 属性过滤每个操作可以处理的内容。
在 MVC 上,最接近 IsPostBack 的操作是:
public ActionResult Index()
{
if (Request.HttpMethod == "POST")
{
// Do something
}
return View();
}
因此,
[HttpPost]
public ActionResult Create(CreateModel model)
{
if (Request.HttpMethod == "POST") // <-- always true
{
// Do something
}
return RedirectToAction("Index");
}
【讨论】:
我是否还建议您将其实现为控制器基类中的属性,例如:
protected bool IsPostback
{
get { return Request.HttpMethod == "POST"; }
}
-马克
【讨论】:
其实是这样的:
if (Request.Method == "POST")
{
}
【讨论】: