2017-03-07 2 views
-1

私はC#に基づいてスタジオ2013でMVCプロジェクトを持っています。@ Html.DropDownListForバリデーション要素を設定しない

私は、剃刀の構文を使用してウェブのページにいくつかのフィールドを持っています。これらのうちのいくつかは、普通の@Html.EditorFor()のクラスで、@class = "form-control"のクラスで、その他は@Html.DropDownListFor()です。

フォームの検証にデータアノテーションを追加できるモデルがあります。エンティティフレームワークを使用して私の地区をSQLからインポートしています。これらをドロップダウンリストとして表示しています。これはすべてうまく動作し、純粋に検証メッセージを表示する問題です。

これらの作成に使用した次のコードサンプルをご覧ください。ここで

は私のモデルである...

namespace MySystem.Models 
{ 
    [MetadataType(typeof(CRecord_Buddy))] 
    public partial class CRecord 
    { 

    // properties used to pull back and display the name etc instead on an id in dropdown boxes. 

    [Required(ErrorMessage = "Select District.")] 
    public string DistrictName { get; set; } 


public class CRecord_Buddy 
    { 
     [Required(ErrorMessage = "Please enter a Surname.")] 
     public string Surname { get; set; } 

     ... 
    } 
} 

}

私create.cshtmlページには、次の...

//code for Surname 
@Html.EditorFor(model => model.client.Surname, new { htmlAttributes = new { @class = "form-control" } }) 
@Html.ValidationMessageFor(model => model.client.Surname, "", new { @class = "text-danger" }) 
@Html.ValidationMessage("Surname", "*", new { @class = "text-danger" }) 

//code for district 
@Html.DropDownListFor(model => model.client.District, new SelectList(Model.allDistricts, "ID", "District1", 1), "- Select District -") 
@Html.ValidationMessage("DistrictName", "*", new { @class = "text-danger" }) 
@Html.ValidationMessageFor(model => model.client.District, "", new { @class = "text-danger" }) 

ように見える以下であるものの画像です検証が始まると表示されます。

enter image description here ​​

上記の画像からわかるように、@ Html.EditorForアイテムでは有効ですが、@ Html.Dropdownlistforアイテムでは正しく表示されません。これらは両方とも、検証を設定するという点で同じように設定されていますが、ドロップダウンリスト項目が適切に機能するように見えます。

ご提案は大歓迎です。

+0

あなたはこれを試すことができます。http://stackoverflow.com/questions/4729440/validate-a-dropdownlist- in-asp-net-mvc –

+2

プロパティ「District」とは何ですか? (あなたが示したのは、「DistrictName」という名前のものだけです) –

答えて

0

必須属性はDistrictNameで、Districtにはありません。 それは理由の検証結果が表示されない理由です。

0

てみてくださいは以下のように定義するには:このことができます

//code for district 
@Html.DropDownListFor(model => model.client.DistrictName, new SelectList(Model.allDistricts, 
    "ID", "District1", 1), "- Select District -") 
@Html.ValidationMessage("DistrictName", "*", new { @class = "text-danger" }) 
@Html.ValidationMessageFor(model => model.client.DistrictName, "", new { @class = "text-danger" }) 

希望...

関連する問題