[英]Binding to a name that is not a legal C# variable name
我在表單上使用Google ReCaptcha元素。 ReCaptcha將參數添加到名為g-recaptcha-response
的POSTed參數中,控制器需要檢索該參數。 由於此參數名稱不是合法的C#變量名稱,因此似乎檢索其值的唯一方法是通過Request.Params["g-recaptcha-response"]
(而不是通過模型綁定到視圖模型中的屬性) 。
現在,我的問題是在POSTed參數的其他地方,我有幾個可能包含HTML標記的表單字段。 我已經用[AllowHtml]
注釋了視圖模型中的關聯屬性,這可以防止如果用戶在表單中輸入HTML標記,則模型綁定器將拋出HttpRequestValidationException
。 但是[AllowHtml]
顯然僅在模型綁定器中有效 。 如果用戶已在表單中輸入HTML標記,則當我引用Request.Params
來獲取ReCaptcha響應時,我將收到HttpRequestValidationException
。
據我所知,在仍然允許在選定的POST參數中允許HTML標記的同時獲取ReCaptcha響應的唯一方法是使用編寫自定義模型綁定程序(例如https://stackoverflow.com/a/ 4316327/1637105 ),以允許我將視圖模型中的屬性綁定到別名(在我的情況下,該屬性名稱不是有效的C#變量名稱)。
這個問題的目的只是為了確認我確實確實需要費心實現自定義模型綁定程序。
任何建議或替代解決方案都將受到歡迎!
編輯:
在我看來,另一種解決方案將是找到一種從POSTed參數獲取值的方法,而無需觸發(或在處理時)HttpRequestValidationException。
您可以使用Request
的Unvalidated
屬性來訪問值,而無需觸發Request Validation。 例如
var captcha = Request.Unvalidated.Form["g-recaptcha-response"];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.