从我的模型中的集合动态创建一个选择列表



我有这样的看法:

<script type="text/javascript" language="javascript">
    $(document).ready(function () {
        $('a.create').click(function () {
            // create dropdown, insert in span
        })
    });
</script>
<a class='create' href='#'>Click</a>
<span></span>

在我的控制器方法中,我传入了一个应该填充选择列表的集合,并且可以在我的视图中使用@Model.Agencies访问。

我试图从这里遵循解决方案(如何使用jQuery动态创建下拉列表?),但我不知道如何从我的模型的集合创建一个数组。

基本上只需要填充JavaScript数据数组。这需要将值注入到数组中。

外部var data = {和foreach循环基于@Model.Agencies生成值。因为我不知道你的Agencies列表是如何定义的,我只是猜测,IdName

var data = {
     @foreach(var agency in Model.Agencies)
     {
       <text>'</text>agency.Id<text>': '</text>agency.Name<text>,</text>
     }    
}

既然你正在使用MVC,我可以想到另外两种方法来做到这一点。

第一种方法是使用HTML Helper函数@Html.DropDownList()@Html.DropDownList。这是最简单的方法,它还将所选选项的value属性提交回视图模型。要使用这些函数,您需要将列表设置为SelectList或SelectListItems列表。 第二种方法是使用扩展html帮助器。这需要更多的努力,但如果您需要添加自定义属性到生成的html,这可能是必要的。

如果你想创建下拉菜单你可以这样创建

      @Html.DropDownListFor(x => x.AgencyId,
        new SelectList(Model.Agencies, dataTextField: "AgencyName", dataValueField: "FinancialYearId"))

下拉选择的值你会得到AgencyId

最新更新