我在表單上使用Google ReCaptcha元素。 ReCaptcha向控制器需要檢索的名爲g-recaptcha-response
的已發佈參數添加一個參數。由於此參數名稱不是合法的C#變量名稱,似乎檢索其值的唯一方法是通過Request.Params["g-recaptcha-response"]
(而不是通過模型綁定視圖模型中的屬性)。綁定到不是合法的C#變量名稱的名稱
現在,我的問題是,在POSTed參數的其他地方我有幾個表單域可能包含HTML標記。我已使用[AllowHtml]
註解了我的視圖模型中的關聯屬性,如果用戶將HTML標記輸入到表單中,則可防止模型聯編程序拋出HttpRequestValidationException
。但[AllowHtml]
顯然只適用於模型綁定器。如果用戶在表單中輸入了HTML標記,那麼當我參考Request.Params
來獲取ReCaptcha響應時,我會得到一個HttpRequestValidationException
。
就我所知,唯一可以獲取ReCaptcha響應,同時仍允許在選定的POST參數中使用HTML標記的方法是使用編寫自定義模型聯編程序(例如https://stackoverflow.com/a/4316327/1637105)的痛苦讓我將我的視圖模型中的屬性綁定到別名(在我的情況下,屬性名稱不是有效的C#變量名稱)。
這個問題的關鍵是隻是爲了確認,我真的需要去實現自定義模型綁定的痛苦。
任何建議或替代解決方案都是值得歡迎的!
編輯:
它發生,我認爲另一個解決辦法是找出一種方法來從張貼的參數的值,而不會觸發(或同時處理)的HttpRequestValidationException。