2015-06-14 95 views
0

如何創建選項值來自控制器的下拉菜單。 控制器將從數據庫表的任何列值中獲取它。如何在mvc中創建動態下拉菜單

例如,如果該下拉列表用於選擇國家,並且我在我的數據庫表的國家/地區列中有3個國家/地區,那麼在下拉列表中應顯示3個國家/地區。如果我在國家表中增加一個價值,那也應該在下拉菜單中。

我是MVC的新手,發現有點困難。我正在使用mvc5。

注:因爲我已經一個模型視圖裏面refered,我不能添加模型此下拉

+1

建議你去到現場MVC和工作,通過一些基本的教程 –

+1

一個簡單的谷歌搜索給了我一些非常好的教程 - http://www.asp.net/mvc/overview/older-版本/工作與最下拉列表框和-的jQuery /使用最下拉列表輔助與 - ASPNET-MVC – ramiramilu

回答

1

我也做了同樣在自己的網站。這就是我要做的事:

首先,創建一個控制器動作返回JSON值:

public ActionResult GetCountryNames() 
    { 
     List<string> CountryNames = new List<string>(); 
     CountryNames = context.GetCountries(); // your EF context to get countrynames from database 
     return Json(CountryNames.ToArray()); 
    } 

然後在您的視圖中添加此HTML標記:

<select id="countrylist" onchange="DoSomething();"></select> 

這是你的下拉列表。它具有在「onchange」事件中聲明的javascript函數,如果您想在值更改時執行某些操作。

最後,你需要添加你的JavaScript函數,該函數調用Ajax控制器的動作,得到的值,並將其設置爲您的下拉列表:

function GetCountryList() { 
var serviceURL = '/Home/GetCountryNames'; 

$.ajax({ 
    type: "post", 
    dataType: "json", 
    url: serviceURL, 
    success: successFunc, 
    async: false, 
    error: errorFunc 
}); 

function successFunc(data, status) { 
    var countrylist = $('#countrylist'); 
    countrylist.empty(); 
    for (var i = 0; i < data.length; i++) { 
    var $option = $("<option>", { id: "option" + i }); 
    $option.append(data[i]); 
    countrylist.append($option); 
    } 
} 

function errorFunc(data, status) { 
    alert('error'); 
    } 
} 

當你的文件已經準備好,運行功能GetCountryList( )。 可能最簡單的就是用jQuery來做。就像這樣:

<script type="text/javascript"> 
     $(document).ready(function() { 
     GetCountryList(); 
     }); 
    </script>