![](/img/trans.png)
[英]How i can generate dynamic id for text field and get data from array of model in asp.net 4 mvc3
[英]ASP.NET MVC3 can't bind a decimal field from a TextBoxFor to my Model
這可能是一個虛擬的問題,但是我遇到了一個我自己無法解決的問題。
我正在研究ASP.NET MVC3項目。 出於某種原因,在特定的“ Create
頁面上,驗證頁面時,模型上未綁定十進制字段,我無法理解原因。
這是我的代碼:
@model ModelA
/*some TextBoxFor or others DropDownListFor, all of them working well*/
@Html.TextBoxFor(m => m.ModelB.ModelC.MyField, new { @id = "txtMyField" })
當我驗證頁面時, 除了此特定字段MyField
,模型ModelA
正確填充。 其他字段可以,例如:
@Html.TextBoxFor(m => m.ModelB.AnotherField, new { @id = "txtAnotherField" })
正常工作,並且正確填充了ModelB
其他屬性。
我的模特
ModelA
包含類型的屬性ModelB
稱為ModelB
。
ModelB
包含ModelC
類型的屬性,稱為ModelC
。
ModelC
包含一個名為MyField
的屬性。 (將來可能會再增加一兩個)。 此字段是一個decimal
字段,沒有任何DataAnnotation或任何內容。
public decimal MyField { get; set; }
順便說一句,當我在瀏覽器的控制台中時,我要求
$('#txtMyField').val()
它顯示出良好的價值,例如12.54
。
我嘗試了什么
為什么這個領域是反叛者? 我可能做錯了什么,但我不知道在哪里...有人可以向我解釋我的錯誤在哪里?
謝謝 !
好的,這是解決方案:
一個“正確的”十進制值看起來像是帶有一個的45.68 .
作為分隔符。
但是該應用程序是非英語應用程序,並且分隔符必須為,
。 默認情況下,45,68不是正確的數字。 所以我添加了這段代碼:
jQuery.extend(jQuery.validator.methods, {
number: function (value, element) {
return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(value);
}
});
和45,68被識別為正確的數字。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.