我的模型中有一个带有errormessage的必需属性,当用户没有为此属性输入任何文本时,错误消息文本没有显示。
我的cshtml页面是
<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@using (Html.BeginForm("Index", "Booking", FormMethod.Post, new { @class = "form-horizontal" }))
{
<fieldset>
<div class="control-group">
@Html.LabelFor(m => m.CustomerOrderNumber, "", "", new { @class = "control-label" })
<div class="controls">
@Html.TextBoxFor(m => m.CustomerOrderNumber) @Html.ValidationMessageFor(m => m.CustomerOrderNumber)
<p class="help-block">This is a mandatory field.</p>
</div>
</div>
<input type="submit" value="Next" class="btn btn-primary"/>
</fieldset>
}
我删除了所有无关的内容。
我的模特.cs来源
using System;
using Iesi.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel;
namespace Technolog.Rma.Business.Domain
{
[Serializable]
public class RepairBatch
{
[Required(ErrorMessage = "Please enter a order number.")]
[StringLength(30)]
[Display(Name ="Order number")]
public virtual string CustomerOrderNumber { get; set; }
public RepairBatch()
{
CustomerOrderNumber = "";
}
public virtual void copy(RepairBatch rb){
this.CustomerOrderNumber = rb.CustomerOrderNumber;
}
}
}
当我在浏览器中查看返回的html时,我看到以下html为我的客户订单号输入框
<div class="control-group">
<label class="control-label" for="CustomerOrderNumber">Order number</label>
<div class="controls">
<input data-val="true" data-val-required="&#39;CustomerOrderNumber&#39; must not be empty." id="CustomerOrderNumber" name="CustomerOrderNumber" type="text" value="" /> <span class="field-validation-valid" data-valmsg-for="CustomerOrderNumber" data-valmsg-replace="true"></span>
<p class="help-block">This is a mandatory field.</p>
</div>
data-val-required属性具有MVC 3框架返回的固定文本,而不是我使用required属性在customerordernumber属性上指定的错误消息。
我正在使用Visual Studo 2010 SP1和MVC 2011年4月2011工具更新。我也在使用nhibernate 3.2和spring.net 1.3.2
有没有人遇到过此问题或有任何建议?
20/11/2012更新
我使用以下解决方法来显示正确的验证消息
@ Html.TextBoxFor(m =&gt; m.CustomerOrderNumber,new {data_val_required =“请输入订单号”})@ Html.ValidationMessageFor(m =&gt; m.CustomerOrderNumber)
Jabbar Azam
答案 0 :(得分:0)
我不使用nhibernate或spring.net,但我注意到你的CustomerOrderNumber
属性是虚拟的。您的模型类是从RepairBatch
而不是RepairBatch
本身派生的吗?我不相信数据注释在基类上时会被识别。 (伙计们,告诉我,如果我错了!)