如何创建其选项值来自控制器的下拉列表。 控制器将从数据库表中获取任何列值。
例如,如果该下拉列表用于选择国家/地区,并且我的数据库表格的国家/地区列中有3个国家/地区,则在下拉列表中应显示3个国家/地区。如果我在国家/地区表中再添加一个值,那么也应该进入下拉列表。
我是MVC的新手,这有点困难。我正在使用mvc5。
注意:因为我已经在视图中引用了一个模型,所以我无法为此下拉列表添加模型
答案 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>