簡體   English   中英

ASP.NET MVC3無法將十進制字段從TextBoxFor綁定到我的模型

[英]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


我嘗試了什么

  • 將此十進制字段更改為浮點類型,問題是相同的。
  • 將其放在EditorFor而不是TextBoxFor中,問題是相同的。
  • 將字段MyField放在ModelB中。 ModelB的唯一屬性為0是MyField。


為什么這個領域是反叛者? 我可能做錯了什么,但我不知道在哪里...有人可以向我解釋我的錯誤在哪里?
謝謝 !

好的,這是解決方案:

一個“正確的”十進制值看起來像是帶有一個的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM