【问题标题】:Pass a model and a separate list to controller将模型和单独的列表传递给控制器
【发布时间】:2019-05-07 10:47:06
【问题描述】:

我有一个模型的局部视图,供用户填写必填字段。除了这些字段,我还有一个 jQuery 多选下拉列表,可以在其中选择多个条目。如何将模型和列表传递给控制器​​?

如果您需要更多信息,请告诉我。

$.ajax({
        type: 'POST',
        cache: false,
        url: '@Url.Action("AddNewMeeting", "Meeting")',
        data: $("#formAddAppointment").serializeArray(),
        success: function (data) {

    var rooms=[];
    var $ddl = $("#ddlRoomsMulti");
    $ddl.find('option:selected').each(function(){
        rooms.push({value:$(this).val(),text:$(this).text()});
    })

【问题讨论】:

    标签: jquery asp.net-mvc multi-select


    【解决方案1】:

    如果你的控制器动作结果有两个这样的参数:

    [HttpPost]
    public ActionResult Edit(MyPageModel model, List<string> selectedValues)
    {
        //SOME CODE...
    }
    

    我会让你的 $.ajax 请求中的“数据”属性类似于:

    data: {
        model : $('form').serialize(),
        selectedValues: $('select option:selected').map(function(i, obj){ return $(obj).val(); });
    },
    

    希望这会有所帮助!

    【讨论】:

    • 如果你 console.log(是你的 JS 还是使用开发工具)并检查这个:$('form').serialize(),它是否符合你的模型定义?
    • 是的,它匹配,但仍然为 null
    • 尝试将 contentType: "application/json" 添加到您的 ajax 调用中。这将告诉服务器会发生什么。
    • 使用该进程永远不会进入控制器操作。
    【解决方案2】:

    在出现更好的方法之前,我只是将每个选定房间的名称和 ID 添加到一个字符串中,该字符串是视图隐藏变量中模型的一部分。然后我简单地拆分字符串并为每个成员添加会议。

    【讨论】:

      猜你喜欢
      • 2020-01-09
      • 2012-05-31
      • 2014-10-17
      • 1970-01-01
      • 1970-01-01
      • 2011-07-03
      • 1970-01-01
      • 2016-07-24
      • 1970-01-01
      相关资源
      最近更新 更多