将多个参数从Ajax Post传递到ASP.NET MVC控制器

Capiono

我认为我要与ockoutjs绑定。我需要使用ajax发布动态地将数据添加到viewmodel中的列表中。

            var data = {
                model: ko.toJS(self.Model),
                name: name
            }

             $.ajax({
                url: options.url + "AddAdvantage",
                type: 'POST',
                dataType: 'json',
                contentType: 'application/json',
                data: JSON.stringify(data),
                traditional: true,
                success: function (data) {
                    self.UpdateOnChange = false;
                    ko.mapping.fromJS(data, self.Model);
                    self.UpdateOnChange = true;
                }
            });

当data参数传递给控制器​​动作时:

[HttpPost]
public JsonResult AddAdvantage([ModelBinder(typeof(AdvantageModelBinder))] AdvantageViewModel model, string name) {
}

名称值已传递,但模型始终为null

我已经试过了:

            var data = {
                model: ko.toJSON(self.Model),
                name: name
            }

还尝试了:

            var data = JSON.stringify({
                model: ko.toJSON(self.Model),
                name: name
            });

同样的结果。

这工作正常:

           $.ajax({
                url: options.url + "AddAdvantage",
                type: 'POST',
                dataType: 'json',
                contentType: 'application/json',
                data: ko.toJSON(self.Model),
                traditional: true,
                success: function (data) {
                    self.UpdateOnChange = false;
                    ko.mapping.fromJS(data, self.Model);
                    self.UpdateOnChange = true;
                }
            });

我的ModelBinder

public class AdvantageModelBinder: DefaultModelBinder
{
    public AdvantageModelBinder()
    {
    }

    protected override object CreateModel(ControllerContext controllerContext, ModelBindingContext bindingContext, Type modelType)
    {
        ValueProviderResult value = bindingContext.ValueProvider.GetValue("WizardType");
        Type typeByTypeName = AdvantageModelBinder.GetTypeByTypeName((string)value.ConvertTo(typeof(string)));
        object obj = Activator.CreateInstance(typeByTypeName);
        bindingContext.ModelMetadata = ModelMetadataProviders.Current.GetMetadataForType(() => obj, typeByTypeName);
        return obj;
    }

    public static Type GetTypeByTypeName(string typeName)
    {
        Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
        for (int i = 0; i < (int)assemblies.Length; i++)
        {
            Type type = assemblies[i].GetType(typeName, false, true);
            if (type != null)
            {
                return type;
            }
        }
        throw new ArgumentException("Can't find the specified type in the loaded assemblies.", typeName);
    }
}

谁能告诉我如何解决这个问题?

卡洛斯·费尔南德斯(Carlos Fernandez)

似乎您没有在有效负载中传递完全相同的对象。

假设您的模型对象是这样的:

{
   foo: 1,
   bar: 2
}

在前两个示例中,您将创建此对象:

{
   model: {
             foo: 1,
             bar: 2
          },
   name: "whatever"
}

因此,当您将其作为参数传递给ajax调用时,就传递了MVC端不期望的对象。

如果要将其存储在变量中,则需要执行以下操作:

 var data = ko.toJSON(self.model)

并通过以下方式进行ajax调用:

 $.ajax({
            url: options.url + "AddAdvantage",
            type: 'POST',
            dataType: 'json',
            contentType: 'application/json',
            data: data,
            traditional: true,
            success: function (data) {
                self.UpdateOnChange = false;
                ko.mapping.fromJS(data, self.Model);
                self.UpdateOnChange = true;
            }
        });

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将空列表从控制器传递到控制器ASP.NET MVC

来自分类Dev

Asp.net MVC,无需使用Ajax,即可将数组从视图传递到控制器

来自分类Dev

将HTML字符串从控制器传递到View ASP.Net MVC

来自分类Dev

如何将JavaScript数据传递到控制器ASP.NET MVC

来自分类Dev

将整个对象从视图传递到ASP.NET MVC 5中的控制器

来自分类Dev

如何将项目列表从视图传递到控制器(ASP.NET MVC 4)

来自分类Dev

将图像传递到控制器ASP.NET MVC

来自分类Dev

使用ASP.NET MVC将表对象从视图传递到控制器

来自分类Dev

如何将元组从JavaScript传递到ASP.NET MVC控制器操作

来自分类Dev

将HTML字符串从控制器传递到View ASP.Net MVC

来自分类Dev

使用asp.net mvc将DropDownList中的SelectedValue从View Razor传递到控制器

来自分类Dev

将图像传递到控制器ASP.NET MVC

来自分类Dev

如何将列表从控制器传递到ASP.NET MVC中的javascript函数?

来自分类Dev

ASP.NET MVC C# - 将数据从控制器传递到类

来自分类Dev

ASP.NET MVC - 将动态 ExpandoObject 从控制器传递到视图时出现 RuntimeBinderException

来自分类Dev

Asp.net 核心 mvc ajax 发布到具有多个参数的控制器返回错误请求

来自分类Dev

如何将多个集合作为参数从 ASP.NET MVC 中的控制器传递给视图?

来自分类Dev

如何将数据从ASP.NET WebAPI ApiController传递到ASP.NET MVC控制器?

来自分类Dev

如何将数据从ASP.NET WebAPI ApiController传递到ASP.NET MVC控制器?

来自分类Dev

如何在ASP.NET MVC中将多个参数从jquery发布到控制器?

来自分类Dev

ActionLink没有将参数传递给控制器-asp.Net MVC 4

来自分类Dev

如何将多个Json对象传递给ASP.net MVC控制器?

来自分类Dev

jQuery Ajax和ASP.NET MVC控制器

来自分类Dev

ASP.NET MVC使用Ajax将整个模型传递给控制器

来自分类Dev

如何使用 Jquery 和 ajax 将 id 传递给 MVC 控制器 [ASP.NET]

来自分类Dev

将 HTML 从 ASP.NET MVC 控制器传递到浏览器直接链接不会呈现 HTML 标记

来自分类Dev

ASP.NET 5 / MVC 6 Ajax将模型发布到控制器

来自分类Dev

将Ajax数据发布到ASP.NET MVC控制器

来自分类Dev

如何使用AJAX将数据发布到ASP.NET MVC控制器?

Related 相关文章

  1. 1

    将空列表从控制器传递到控制器ASP.NET MVC

  2. 2

    Asp.net MVC,无需使用Ajax,即可将数组从视图传递到控制器

  3. 3

    将HTML字符串从控制器传递到View ASP.Net MVC

  4. 4

    如何将JavaScript数据传递到控制器ASP.NET MVC

  5. 5

    将整个对象从视图传递到ASP.NET MVC 5中的控制器

  6. 6

    如何将项目列表从视图传递到控制器(ASP.NET MVC 4)

  7. 7

    将图像传递到控制器ASP.NET MVC

  8. 8

    使用ASP.NET MVC将表对象从视图传递到控制器

  9. 9

    如何将元组从JavaScript传递到ASP.NET MVC控制器操作

  10. 10

    将HTML字符串从控制器传递到View ASP.Net MVC

  11. 11

    使用asp.net mvc将DropDownList中的SelectedValue从View Razor传递到控制器

  12. 12

    将图像传递到控制器ASP.NET MVC

  13. 13

    如何将列表从控制器传递到ASP.NET MVC中的javascript函数?

  14. 14

    ASP.NET MVC C# - 将数据从控制器传递到类

  15. 15

    ASP.NET MVC - 将动态 ExpandoObject 从控制器传递到视图时出现 RuntimeBinderException

  16. 16

    Asp.net 核心 mvc ajax 发布到具有多个参数的控制器返回错误请求

  17. 17

    如何将多个集合作为参数从 ASP.NET MVC 中的控制器传递给视图?

  18. 18

    如何将数据从ASP.NET WebAPI ApiController传递到ASP.NET MVC控制器?

  19. 19

    如何将数据从ASP.NET WebAPI ApiController传递到ASP.NET MVC控制器?

  20. 20

    如何在ASP.NET MVC中将多个参数从jquery发布到控制器?

  21. 21

    ActionLink没有将参数传递给控制器-asp.Net MVC 4

  22. 22

    如何将多个Json对象传递给ASP.net MVC控制器?

  23. 23

    jQuery Ajax和ASP.NET MVC控制器

  24. 24

    ASP.NET MVC使用Ajax将整个模型传递给控制器

  25. 25

    如何使用 Jquery 和 ajax 将 id 传递给 MVC 控制器 [ASP.NET]

  26. 26

    将 HTML 从 ASP.NET MVC 控制器传递到浏览器直接链接不会呈现 HTML 标记

  27. 27

    ASP.NET 5 / MVC 6 Ajax将模型发布到控制器

  28. 28

    将Ajax数据发布到ASP.NET MVC控制器

  29. 29

    如何使用AJAX将数据发布到ASP.NET MVC控制器?

热门标签

归档