2013-03-05 28 views
0

我想從兩個DropDowns訪問選定的鍵,然後使用Keys作爲參數調用Controller Action。如何從MVC中的DropDownList訪問選定的鍵

在我的MVC視圖,然後我有以下代碼:

@model Test.Models.LoginViewModel 
<p> 
    Database @Html.DropDownListFor(x => x.SelectedDatabase, Model.DatabaseList, "-- Select an Item --", new {@id="databaseDD", @name="databaseDD"}) 
</p> 
<p> 
    Language @Html.DropDownListFor(x => x.SelectedLanguage, Model.LanguageList, "-- Select an Item --", new {@id="languageDD", @name="languageDD"}) 
</p> 
<p> 
    @using (Html.BeginForm("LoginToService", "Home", new { databaseKey = Model.SelectedDatabase, languageKey = Model.SelectedLanguage }, FormMethod.Post, new { target = "_self" })) 
    { 
     <input id="login" type="submit" name="login" value="Login" /> 
    } 
</p> 

的問題是,產品的性能和Model.SelectedDatabase Model.SelectedLanguage未設置下拉選擇更改時。我如何訪問選定的鍵並將它們用作參數?

回答

0

在你的控制器,你應該使用預定義的類,像這樣:

public class DropDownItem 
    { 

     public int Key { get; set; } 
     public string Value{ get; set; } 
    } 

使用後端方法所需的字段映射到DropDownItem類似:

public SelectList FooListUsed() 
    { 
    List<DropDownItem> result = from item in ListOfDataBaseTableElements 
       select new DropDownItem{ 
        Key = item.id, 
        Value = item.name 
        } 
    result.Insert(0, new DropDownItem{ Key = 0, Value = "Select All" }); 
    return new SelectList(result, "Key", "Value"); //this mapping will take care of your selected value issue 

遍的結果通過Viewbag或通過Model查詢視圖, 讓我們使用視圖包作爲示例:ViewBag.FooList=FooListUsed();

最後一步...使用DropdownList:

@Html.DropDownListFor(model => model.SelectedDatabase,(IEnumerable<SelectListItem>)ViewBag.FooList) 
+0

Hi Mihai,我的問題是沒有填充DropDownList,但得到選定的密鑰。不管怎麼說,還是要謝謝你。 – SwissEngineer 2013-03-05 14:29:57

+0

那麼你的第一個問題是你沒有將你的價值觀傳遞給模型。您的登錄按鈕包含在開始表單中..但只有定義到該表單中的內容才歸入控制器。第一步將在開始表格中包含您的下拉列表。 – 2013-03-05 14:34:18

相關問題