Post javascript生成的选择选项

本文关键字:选择 选项 javascript Post | 更新日期: 2023-09-27 17:53:44

视图中的代码如下:

<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属性关联?

Post javascript生成的选择选项

如果你看一下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

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

所以你需要像这样创建你的select:
<select id="SelectOptions" name="Color"></select>

但是,HTML助手会为你做所有的工作:

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

将生成:

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