发布javascript生成的选择选项

时间:2014-03-25 19:56:04

标签: c# javascript asp.net-mvc

以下是视图中的代码:

<select id="SelectOptions"></select>

这是javascript:

$.ajax({
    url: '/PriseRendezVous/GetDispos/',
    data: { dateText: selected },
    success: function (listDispos) {
        var myArray = listDispos.split(',');
        for (var i = 0; i < myArray.length; i++) {
            $('#SelectOptions').append('<option value="' + myArray[i] + '">' + myArray[i] + '</option>');
        }
     }
});

假设Model属于Car类型。我想将所选值发布为Car.Color

如何将值与我的Model属性相关联?

2 个答案:

答案 0 :(得分:0)

MVC模型绑定器的工作原理是将与HTML输入关联的name属性与预期接收的Model的属性相匹配。

所以你需要建立你的选择:

<select id="SelectOptions" name="Color"></select>

但是,HTML帮助程序将为您完成所有工作:

@Html.DropDownListFor(x => x.Color, new List<SelectListItem>())

将生成:

<select id="Color" name="Color"></select>

答案 1 :(得分:0)

如果你看一下DropDownListFor如何呈现HTML,假设你的视图看起来像这样(假设你的Car模型上有ColorSelectList属性,类型为SelectList,包含SelectListItems你所有的颜色):

@model Car
@Html.DropDownListFor(m => m.Color, Model.ColorSelectList)

你的HTML会看起来像这样:

<select id="Color" name="Color">
    <option value="Blue" selected="selected">Blue</option>
    <option value="Red">Red</option>
</select>

所以当你POST表单给你的控制器时,应该期待你的模型:

public JsonResult GetDispos(Car car) { ... }

然后,DefaultModelBinder将获取您的值,并根据您表单中属性的名称将它们转换为操作方法中的对象。

因此,您只需要在表单中为元素的名称指定模型属性中的相应名称。要了解有关此内容的更多信息,请搜索有关模型绑定器的信息,尤其是DefaultModelBinder