-1

空の文字列ではなく、最初のオプション値をゼロにするにはどうすればよいですか。したがって、ユーザーがフォームにアクセスして何も選択しない場合、値はゼロのように渡されます。私はMVCを初めて使用し、簡単な答えを見つけるために時間を費やしてきました。これはJqueryで実行できますか?任意の提案をいただければ幸いです。

ここに私の見解

@Html.DropDownListFor(x => x.ItemCatId,
 new SelectList(Model.CategoryddList, "Value", "Text"),
 "Select Category")

およびコントローラー

items.CategoryddList =
        itemsRepository.GetItemDdl("Item Categories").Select(c => new SelectListItem 
                        {
                           Value = c.DropdownID.ToString(),
                           Text = c.DropdownText
                        });  
4

1 に答える 1

1

多くの問題と同様に、それを行う方法はたくさんあります。Jquery と Javascript はオプションです。私にとって最も簡単な (そして怠惰な) 方法は、リストの一番上に「選択してください」という値を持つ項目を追加することです。あなたのファサードがどのように機能するかはわかりませんが、このようなものでなければなりません

items.CategoryddList = new Category( null , 0, “Please Select …”); //add the default
//rest of your code
items.CategoryddList =
    itemsRepository.GetItemDdl("Item Categories").Select(c => new SelectListItem 
                    {
                       Value = c.DropdownID.ToString(),
                       Text = c.DropdownText
                    });  

HTTPPost アクションでもそのケースを処理する必要があることに注意してください。

もう 1 つの方法は、カミソリ @Html.DropDownListFor を使用せず、foreach を含む HTML を使用することです。後でこれを行うために他の方法を探してみます

編集:ビューからそれを行う別の方法があります(現在、簡単なJqueryコードが見つかりません)。これを試して:

<select name="FOOName"  id="FOOName" onchange="test(this)">
   <option value=""> Please Select</option>
   @{ foreach (var type in Model.CategoryddList)
   { 
    <option value="@type.Value"> @type.Text </option>
   }
}
</select> 
于 2012-10-25T21:01:52.210 に答える