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

时间:2013-05-26 01:31:21

标签: c# jquery asp.net asp.net-mvc razor

我认为这是:

<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进行访问。

我正在尝试从此处(How to create dropdown list dynamically using jQuery?)遵循解决方案,但我不知道如何从我的模型集合中创建数组。

3 个答案:

答案 0 :(得分:0)

您基本上只需要填充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>
     }    
}

您可能需要使用标签。

答案 1 :(得分:0)

由于你正在使用MVC,我还有其他两种方法可以做到这一点。

第一种方法是使用HTML帮助程序函数@Html.DropDownList()@Html.DropDownList。这是最简单的方法,它还会将所选选项的value属性提交回viewmodel。要使用这些函数,您需要将列表设为SelectList或SelectListItems列表。

第二种方法是使用扩展html帮助器。这需要付出更多努力,但如果您需要向生成的html添加自定义属性,则可能需要这样做。

答案 2 :(得分:0)

如果您只想创建Dropdown,可以像这样创建

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

下拉选择的值,您将获得AgencyId。