如何在mvc中创建动态下拉列表

时间:2015-06-14 13:25:32

标签: asp.net-mvc asp.net-mvc-3

如何创建其选项值来自控制器的下拉列表。 控制器将从数据库表中获取任何列值。

例如,如果该下拉列表用于选择国家/地区,并且我的数据库表格的国家/地区列中有3个国家/地区,则在下拉列表中应显示3个国家/地区。如果我在国家/地区表中再添加一个值,那么也应该进入下拉列表。

我是MVC的新手,这有点困难。我正在使用mvc5。

注意:因为我已经在视图中引用了一个模型,所以我无法为此下拉列表添加模型

1 个答案:

答案 0 :(得分: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>

这是您的下拉列表。它具有在&#34; onchange&#34;中声明的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>