我如何收到后期值MVC 3(Jquery Ajax)

时间:2013-01-28 06:16:26

标签: jquery vb.net asp.net-mvc-3

我是MVC和这种编程的新手,我想这是非常微不足道的,但经过5个小时的搜索和尝试,我觉得被击败了。我的视图中有一个看起来像这样的帖子;

 $.ajax({
        url: '@Url.Action("Moo")',
        type: "post",
        dataType: "string",
        contentType: "json",
        data: JSON.stringify({"foo": "bar"}),
        success: function (data) {}
        });
    });

然后我在控制器中有一个看起来像这样的函数;

Function Moo(test As String) As ActionResult
    Return View()
End Function

当我运行它时,调试器显示我到达了Return语句,但我没有得到任何测试来分配任何值(foo:bar)。

我的另一个考虑因素是,当我设法从ajax函数中恢复数据时,我可以将其转换回JSON,还是我必须在模型中创建自己的类并将varibles分配给该类? / p>

任何输入都会受到影响。

3 个答案:

答案 0 :(得分:1)

参数/属性名称应匹配。

因此,如果您希望在操作中使用名称为test的值,则需要使用密钥test发送值。因此,将foo更改为test

$.ajax({
        url: '@Url.Action("Moo")',
        type: "post",
        dataType: "string",
        contentType: "application/json",
        data: JSON.stringify({"test": "bar"}),
        success: function (data) {}
        });
    });

请注意,JSON的正确contentType为application/json

如果您有更复杂的数据,例如JSON.stringify({"test": "bar", "test1":"bar1"}), 您可以在服务器端创建一个对象(抱歉C#)

public class MyClass
{
    public string test { get; set; }

    public string test1 { get; set; }
}

然后你可以在你的行动中使用这个模型:

Function Moo(test As MyClass) As ActionResult
    Return View()
End Function

MVC模型绑定器将解析数据并填充属性。您可以在此处开始了解模型绑定:The Features and Foibles of ASP.NET MVC Model Binding

答案 1 :(得分:0)

这是另一种你可能想尝试的方法 [虽然它可能不是最好的]

$.ajax({
        url: '@Url.Action("Moo")?test="testdata"',
        type: "post",
        dataType: "string",
        contentType: "json",
        data: JSON.stringify({"test": "bar"}),
        success: function (data) {}
        });
    });

您传递的参数名称应与服务器上操作方法的参数名称匹配。

答案 2 :(得分:0)

我认为你必须改变这个:

$.ajax({
    url: '@Url.Action("Moo")',
    type: "post",
    dataType: "text", //<---------------------this
    contentType: "application/json", // <-----this 
    data: JSON.stringify({"foo": "bar"}),
    success: function (data) {}
    });
});

或者您也可以尝试更改它:

data: {foo : "bar"},

dataTypes是:

  • "xml":返回可以通过jQuery处理的XML文档。
  • "html":以纯文本形式返回HTML;包含的脚本标记在插入DOM时进行评估。
  • "script":将响应评估为JavaScript并将其作为纯文本返回。
  • "json":将响应评估为JSON并返回JavaScript对象。
  • "jsonp":使用JSONP加载JSON块。添加额外的“?callback =?”在您的网址末尾指定回调。
  • "text":纯文本字符串。