0

モデルにエラー メッセージを含む必須プロパティがあり、ユーザーがこのプロパティにテキストを入力しないと、エラー メッセージ テキストが表示されません。

私の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="&amp;#39;CustomerOrderNumber&amp;#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 属性には、required 属性を使用して customerordernumber プロパティで指定したエラー メッセージではなく、MVC 3 フレームワークによって返される既定のテキストが含まれています。

私は Visual Studo 2010 SP1 と MVC 3 April 2011 Tools update を使用しています。nhibernate 3.2 と spring.net 1.3.2 も使用しています

誰かがこの問題を経験したことがありますか、または何か提案がありますか?

2012/11/20更新

次の回避策を使用して、正しい検証メッセージを表示しました

@Html.TextBoxFor(m => m.CustomerOrderNumber, new { data_val_required="注文番号を入力してください"}) @Html.ValidationMessageFor(m => m.CustomerOrderNumber)

ジャバー・アザム

4

1 に答える 1

0

私は nhibernate も spring.net も使用していませんが、あなたのCustomerOrderNumberプロパティが仮想であることに気付きました。あなたのモデルクラスは、それ自体RepairBatchではなく派生したものですか? RepairBatch基本クラスにある場合、データ注釈が認識されるとは思いません。(皆さん、これについて間違っていたら教えてください!)

于 2012-11-15T16:43:34.283 に答える