我有填充有來自(匿名類型)所產生的的SelectList一個DropDownList具有兩個屬性「CountryId」(int)和「描述」(字符串)。我希望列表中的選定國家是defaultCountry。的DropDownList的SelectedValue不結合正常
Countries = new SelectList(countries, "CountryId", "Description", defaultCountry.CountryId);
其中「國家」是匿名類型從LINQ查詢一個IQueryable。國家是一個視圖模型的公共屬性:
public class CountryBaseViewModel
{
public SelectList Countries { get; set; }
public Contact Contact { get;set; }
....
}
的HTML看起來像這樣:
<p>
<label for="CountryId">Home Country:</label>
<%= Html.DropDownList("CountryId", Model.Countries)%>
</p>
這是好的,當我加載頁面,選擇正確的國家。
但是,當我將更改提交到控制器上的編輯方法時,綁定似乎失敗。
例如,當我使用下面的HTML
<p>
<label for="Contact.Job">Job/Post:</label>
<%= Html.TextBox("Contact.Job", Model.Contact.Job) %>
</p>
我調用該方法
public ActionResult Create(Contact contact)
在控制器上,則contact.Job值是否正確填寫從文本框,但CountryId不是。
我相信MVC使用「Contact.Job」(文本框1)參數設置此。但是,DropDownList的第一個參數是「CountryId」而不是「Contact.CountryId」,因爲如果它是,那麼當我加載它時,所選值不會顯示在列表中。
它看起來像TextBox的第一個參數是數據綁定和DropDownList中的第一個參數是要找到所選擇的項目。
如何使用數據綁定來得到在DropDownList選定值我想要再扎,要Model.Contact.Country的這種風格?