2017-10-24 20 views
0

Visual Studioを使用して、データベースからコントローラとビューを自動的に生成しました。データベースには、FOREIGN KEY (CategoryID) REFERENCES Categories(Id)@ Html.DropDownList()はnullを許可する方法

を持つテーブルdbo.Itemsがあります。生成されたアイテム/作成ビューには、このアイテムが追加されます。このアイテムは、新しいアイテムを追加するときにドロップダウンリストから01カテゴリを選択します。ヌル値:

<div class="form-group"> 
     @Html.LabelFor(model => model.CategoryID, "CategoryID", htmlAttributes: new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.DropDownList("CategoryID", null, htmlAttributes: new { @class = "form-control" }) 
      @Html.ValidationMessageFor(model => model.CategoryID, "", new { @class = "text-danger" }) 
     </div> 
    </div> 

Nullオプションを使用できるようにするにはどうすればよいですか?

答えて

0

Html.DropDownList()は、HTMLエレメントをレンダリングするためのHTMLマークアップを生成するhtmlヘルパーメソッドです。それは、「許可する/許さない」こと自体は何もしません。

MVCモデル検証フレームワークは、ビューモデルのプロパティとその上で定義されたデータ注釈に基づいてフォームを送信するときに、サーバー側でモデルの検証を行います。ヘルパーメソッドは、jQueryの検証プラグインがクライアント側の検証を行うために使用できる必要なデータ属性も生成します。

SELECT要素でオプションを選択できないようにするには、CategoryIDプロパティをnullable intに変更します。あなたがビューモデルを持っていれば、あなたはそこにいたかもしれません。

public class YourViewmodel 
{ 
    public int? CategoryID { set;get;} 
} 

あなたはCategoryId列にNULL可能値を保存するだけでなく、あなたのDBスキーマを更新する必要があります。データベースの最初のアプローチを使用している場合は、dbスキーマを変更して(列をヌル可能に変更する)、エンティティクラスを再生成することができます。

は、私はまた、あなたがあなたのGETアクションメソッドで設定SelectListItemさんのリストをViewBag.CountryCodeを想定すると、DropDownListForヘルパー

@Html.DropDownListFor(x=>x.CategoryID,ViewBag.CountryCode as List<SelectListItem>, 
             "select one", new { @class = "form-control" }) 

をされて使用することをお勧め。

0

あなたが最初に表示され、「オプションを選択」する休閑オーバーロードされたバージョンを使用することができます...

@Html.DropDownList("CategoryID", null, "select option", new { @class = "form-control" }) 

といつでもあなたは、あなたが追加する最初の一つとして「オプションを選択し、」以降休息する必要が区分ドロップダウンにオプションを追加しますその...

関連する問題