1

私のOpenTestplanListViewModelには、DropDownListにバインドされた3つのアイテムを含むDisplayListがあります。

ユーザーがDropDownListの項目を明示的に選択しない場合、常に最初の項目が自動的に選択されます。

代わりにListBoxForを使用してDropDownListForこの問題は発生していません。DropDownListForに「最初はアイテムを選択しないでください!」と伝えることはどういうわけか可能ですか??

@model ITMS.Web.Models.OpenTestplanListViewModel

@{
    Layout = null;   
} 

@using (Html.BeginForm("Open", "Testplan"))
{ 
    @Html.ValidationSummary(false)      
    @Html.DropDownListFor(x => x.TestplanIdAndTemplateId, new SelectList(Model.DisplayList, "TestplanIdAndTemplateId", "Name"), new { @class = "listviewmodel" })  
}

public class OpenTestplanListViewModel
{
    [Required(ErrorMessage = "No item selected.")]
    public string TestplanIdAndTemplateId { get; set; } 
    public IEnumerable<OpenTestplanViewModel> DisplayList { get; set; }

    public int? SelectedTestplanId
    {
        get
        {
            return !String.IsNullOrEmpty(TestplanIdAndTemplateId) ? Convert.ToInt32(TestplanIdAndTemplateId.Split(new[] { '_' }).First()) : (int?)null;
        }
    }
    public int? SelectedTemplateId
    {
        get
        {
            return !String.IsNullOrEmpty(TestplanIdAndTemplateId) ? Convert.ToInt32(TestplanIdAndTemplateId.Split(new[] { '_' }).Last()) : (int?)null;
        }
    }
}
4

2 に答える 2

2

DropDownListForSelectedItemの問題を調べてください。私があなたの質問を正しく理解していれば、彼らはあなたが抱えている問題を解決したと思います。

お役に立てれば。

于 2012-09-21T19:50:40.050 に答える
0
@Html.DropDownListFor(x => x.TestplanIdAndTemplateId,
    new SelectList(Model.DisplayList, "TestplanIdAndTemplateId", "Name"),
    "-- Select Item --",
    new { @class = "listviewmodel" }) 

投稿された@DisplayNameの質問は、よく似ています。モデルまたはコントローラーがどのように機能するかについて詳しく知りたい場合は、こちらをご覧ください:DropDownListForSelectedItemの問題

クラスのメソッドDropDownListForがオーバーロードされています。8つの異なる方法で、http://msdn.microsoft.com/en-us/library/system.web.mvc.html.selectextensions( v = vs.108SelectExtensions ).aspxをチェックして、それぞれが何を実行するかについての詳細を確認してください。

于 2012-09-21T19:52:15.540 に答える