MVC 5内置验证消息,不会显示小数类型

我有一个问题,内置的验证消息不显示在小数类型的字段上。 Int类型按预期工作,不需要任何数据注释。 我有以下模型:

public class Expense
{
    public vwExpenseHeader ExpenseHeader { get; set;  }
    public tblExpenseDetail[] ExpenseDetail { get; set; }
}

在我看来,这是:

            @for (int i = 0; i < 7; i++)
            {
                <td>@Html.EditorFor(m => m.ExpenseDetail[i].Breakfast, new { htmlAttributes = new { @class = "form-control", @onblur = "setCategoryTotal(this.id);" } })</td>
            }

在控制器中:

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create(Expense expense)
    {
        if (ModelState.IsValid)
        {
            using (AccountingClient acc = new AccountingClient())
                acc.ExpenseHeaderInsertOrUpdate(expense.ExpenseHeader, expense.ExpenseDetail);

            return View("Saved");
        }
        else
            return View(expense);
    }

ModelState.IsValid调用确实可行,但验证失败的字段上不会显示任何消息。 对于int字段

            @for (int i = 0; i < 7; i++)
            {
                <td>@Html.EditorFor(m => m.ExpenseDetail[i].Mileage, new { htmlAttributes = new { @class = "form-control", @onblur = "setCategoryTotal(this.id);" } })</td>
            }

它按预期工作。 消息“请输入一个数字。” 出现。

我有这个部分课程

[MetadataType(typeof(tblExpenseDetailMetaData))]
public partial class tblExpenseDetail
{
    public string DateOfExpenseString
    {
        get { return DateOfExpense.ToString("MM/dd/yyyy"); }
    }
}

和这个元数据类

public class tblExpenseDetailMetaData
{
    [DataType(DataType.Currency)]
    public decimal Breakfast;
}

在我试过的元数据类中:

[范围(0,double.MaxValue,ErrorMessage =“请输入有效的doubleNumber”)]

[范围(0,1000)]

int和decimal都是可为空的类型,所以我尝试将decimal设置为非空类型,但结果相同。

添加@ Html.ValidationMessageFor作品,我将可能不得不使用这种方法,但如果我可以获取内置验证消息来显示,则不需要此方法。

任何帮助或建议表示赞赏。


我的错。 MVC的新手,并且将输入上的html5数字属性与我认为在MVC验证中构建的内容混淆起来。

链接地址: http://www.djcxy.com/p/56615.html

上一篇: MVC 5 built in validation message not showing for decimal types

下一篇: How to create validation Message for fields in razor MVC using ViewModel