将字符串发布到mvc

时间:2012-08-26 17:59:37

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

我已经看到了如何在JSON中序列化到一个对象。如何发布返回ViewResult的字符串?

            $.ajax({
                url: url,
                dataType: 'html',
                data: $(this).val(), //$(this) is an html textarea
                type: 'POST',
                success: function (data) {
                    $("#report").html(data);
                },
                error: function (data) {
                    $("#report").html('An Error occured.  Invalid characters include \'<\'. Error: ' + data);
                }
            });

MVC

   [HttpPost]
    public ActionResult SomeReport(string input)
    {
        var model = new ReportBL();
        var report = model.Process(input);
        return View(report);
    }

4 个答案:

答案 0 :(得分:5)

怎么样:

        $.ajax({
            url: url,
            dataType: 'html',
            data: {input: $(this).val()}, //$(this) is an html textarea
            type: 'POST',
            success: function (data) {
                $("#report").html(data);
            },
            error: function (data) {
                $("#report").html('An Error occured.  Invalid characters include \'<\'. Error: ' + data);
            }
        });

如果你使用与参数名称匹配的密钥使data成为一个JSON对象,MVC应该选择它。

在MVC方面......

[HttpPost] 
public ActionResult SomeReport() 
{ 
    string input = Request["input"];
    var model = new ReportBL(); 
    var report = model.Process(input); 
    return View(report); 
} 

答案 1 :(得分:0)

您可能希望以json格式返回结果。不确定如何使用asp.net完全做到这一点,但如果它是Rails,它将是return @foo.to_json

答案 2 :(得分:0)

您需要添加contentType。看看jQuery API:

http://api.jquery.com/jQuery.ajax/

答案 3 :(得分:0)

您可以在操作方法中使用[FromBody]属性,该属性指定应使用请求正文来绑定参数或属性。

[HttpPost]
public ActionResult SomeReport([FromBody] string input)
{
    var model = new ReportBL();
    var report = model.Process(input);
    return View(report);
}