0
有没有一种方法来检测控制器是直接发布,还是该操作是发布前一个表单的结果?检测到控制器的直接发布操作
有没有一种方法来检测控制器是直接发布,还是该操作是发布前一个表单的结果?检测到控制器的直接发布操作
不确定我是否理解您的问题,但如果您询问用户在地址栏中输入他们的浏览器地址栏并按下回车键(通过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
}
我在想如果请求是从浏览器发布的,或者是从浏览器以外的地方开始执行的。我假设用户代理将是一个可以检查的地方,但我相信这可能是欺骗性的。 – 2010-09-08 18:45:19
@ SyntaxC4是的,任何头信息都可以被客户端欺骗。也许你应该澄清为什么你需要知道这一点? – marcind 2010-09-08 20:46:14