很多时候,我们写from表单面,给select标签赋值,都采用这种方式:
1.MVC中设创建公共的分部视图;
2.直接在前台面中,插入片段后台代码;
今天我利用HTML5中的自定义属性,结合JQ扩展方法,写一个通用的JS方法,
JS代码如下:

$.fn.SetSelect = function () { return this.each(function () { var select = $(this); var url = $(this).attr("data-ajax"); var value = $(this).attr("data-Selected"); select.empty(); if (typeof url !== typeof undefined && typeof value !== typeof undefined) { $.ajax({ type: "POST", url: url, async: false, dataType: "json", success: function (result) { for (var i = 0; i < result.length; i++) { select.append("<option value='" + result[i].value + "'>" + result[i].name + "</option>"); } select.val(value); }, }); } }); };

前台页面中:
<select class="form-control" name="MenuID"
data-ajax="@Url.Action("GetMenuInfo", new { moduleId = Model.ModuleID })"
data-selected="@Model.MenuID" required></select>

<script>

//初始化
$("select[name='MenuID']").SetSelect();
</script>

好了,到此结束,我们前台代码是不是很少,所有的select都可以调用,只是传不同的数据源URL即可