【问题标题】:Asp.net MVC: controller with first parameter as json and second parameter as string from ViewAsp.net MVC:控制器,第一个参数为 json,第二个参数为视图中的字符串
【发布时间】:2015-07-04 04:56:30
【问题描述】:

我们有一种情况,我们希望控制器将第一个参数作为 json(模型)作为第二个参数作为模型以外的一些附加数据(例如标志、驱动事件的源代码控制等),我们已经尝试过使用 jQuery 进行调整,但最终在浏览器检查元素中显示错误。

我们的控制器通常是这样的:

public async Task<ActionResult> Foo(Bar b, string additionaldata)
{
    if (additionaldata="Deleted")
    {

    }
    else if (additionaldata="Favorite")
    {

    }
}

内部视图是这样的:

$("#delete").click(function () {
                    $.ajax({
                        url: "/Index/Foo",
                        type: "POST",
                        data: $("#myform").serialize(), 
                        dataType: "json"
                    }).done(function (model) {
                        $("#Foo_Id").val(model.Foo.Id);
                    });
                });

就模型而言,这个 jQuery 工作正常,但就我们尝试添加一些额外的参数而言,我们一无所知。

请建议我们如何通过它。

【问题讨论】:

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


    【解决方案1】:

    启用选项是使用FormData 构建模型并添加其他数据

    var formdata = new FormData($('#myform').get(0)); // serialize the form
    formdata.append('additionaldata', 'Favorite'); // add additional properties
    $.ajax({
      url: '@Url.Action("Index", "Foo")',
      type: 'POST',
      data: formdata,
      processData: false,
      contentType: false,         
    });
    

    【讨论】:

    • 它就像一个魅力,只是想知道它是如何成为我们在 json 中添加选项的第二个参数。我们认为它会在模型​​本身中添加一些字符串。
    • 不太清楚你在问什么。 append() 方法只是将名称/值对添加到正在发布的数据中 - 在本例中为 additionaldata='Favorite'。因为你有一个匹配的参数 (string additionaldata) 它将被绑定。您也可以使用原始代码手动执行此操作,但 data: $("#myform").serialize() + '&amp;additionaldata=Favorite,` 但可能会有点混乱。
    • 这正是我所问的,你的意思是它智能地从json字符串中提取参数是控制器动作的能力?
    • 也许您认为.serialize() 会产生 json? - 它没有 - 它与表单提交按钮完全一样 - 将表单控件编码为字符串 - 使用 console.log($("#myform").serialize()); 查看输出 - 它只是 property1=someValue&amp;property2=anotherValue&amp;....
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-22
    相关资源
    最近更新 更多