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