簡體   English   中英

MVC3十進制字段未正確驗證

[英]MVC3 Decimal field not validating properly

我已經看到了一些與本地化有關的問題,但這似乎不是問題。

我的ViewModel中有2個十進制字段

[DisplayName("Standard Hourly Rate")]
public decimal Rate { get; set; }

[Required]
[DisplayName("Daily Travel Rate")]
public decimal TravelRate { get; set; }

在我看來,我有這個:

<div class="editor-label">
    @Html.LabelFor(model => model.Rate)
</div>
<div class="editor-field">
    @Html.EditorFor(model => model.Rate)
    @Html.ValidationMessageFor(model => model.Rate)
</div>

<div class="editor-label">
    @Html.LabelFor(model => model.TravelRate)
</div>
<div class="editor-field">
    @Html.EditorFor(model => model.TravelRate)
    @Html.ValidationMessageFor(model => model.TravelRate)
</div>

這看起來應該沒問題,但每當我提交表單時,都會收到驗證錯誤。 如果我提交任何帶小數的數字,我被告知價值無效。 如果我輸入的不是數字,我被告知它必須是一個數字。

編輯:HTML輸入如下所示

<input type="text" value="" name="Rate" id="Rate" data-val-required="The Standard Hourly Rate field is required." data-val-number="The field Standard Hourly Rate must be a number." data-val="true" class="text-box single-line">

<input type="text" value="" name="TravelRate" id="TravelRate" data-val-required="The Daily Travel Rate field is required." data-val-number="The field Daily Travel Rate must be a number." data-val="true" class="text-box single-line">

Edit2:控制器只檢查Modelstate.IsValid,然后將其添加到數據庫。

我很驚訝你得到了數字的驗證錯誤(除非你有一個單獨的驗證方法,你沒有顯示)。 除了Required注釋之外,模型中的任何內容都不會導致任何驗證。 無論如何,我建議您查看DataAnnotationsExtensions以獲取十進制驗證:

http://dataannotationsextensions.org/Numeric/Create

然后,你可以只裝飾你decimal與值[Numeric]

如果模型可以接受,您也可以嘗試[DataType(DataType.Currency)]

您的模型上有驗證方法嗎?

編輯

嘗試使用floatdouble而不是decimal 我認為decimal這個詞可能是騙人的。 在這里查看decimal類: http//msdn.microsoft.com/en-us/library/364x0z75(v = vs.80).aspx

它可能會解決一些問題。 小數如下所示:

decimal myMoney = 300.5m;

好的,所以我的問題結果是發回給控制器的模型是空的。 發生這種情況是因為它正在尋找的參數稱為速率,我在模型中也有一個名為Rate的屬性。 我剛剛在控制器中將速率重命名為myrate,現在一切都很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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