检测到控制器操作的直接发布

时间:2010-09-08 14:17:58

标签: .net asp.net-mvc-2 security

有没有办法检测控制器是否直接发布,或者该操作是否是之前发布的表单的结果?

1 个答案:

答案 0 :(得分:0)

不确定我是否理解您的问题,但是如果您询问用户在地址栏中输入的地址与浏览器的地址栏之间的差异以及按Enter(通过GET动词访问您的页面)与已经在页面上的区别并点击表单提交按钮(通常是POST动词,虽然它有时也可以是GET)然后你可以查看HttpRequest.HttpMethod属性的值:

public ActionResult MyMethod() {
  if(this.Request.HttpMethod == "POST") {
    // form submitted
  }
  if(this.Request.HttpMethod == "GET") {
    // accessed directly
  }
}

如果要将操作方法​​限制为仅处理特定的http动词,您还可以使用属性:

[HttpGet]
public ActionResult MyMethod() {
  // only invoked if the request is a GET
}

[HttpPost]
public ActionResult MyMethod(string formInput) {
  // only invoked if the request is a POST
}