5

我已经看到了如何序列化为 JSON 中的对象。如何发布一个返回 a 的字符串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

4 回答 4

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); 
} 
于 2012-08-26T18:03:57.957 回答
0

您可能希望以 json 格式返回结果。不知道如何用 asp.net 准确地做到这一点,但如果是 Rails,它会是return @foo.to_json

于 2012-08-26T18:01:59.710 回答
0

您需要添加一个contentType. 查看 jQuery API:

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

于 2012-08-26T18:03:09.880 回答
0

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

[HttpPost]
public ActionResult SomeReport([FromBody] string input)
{
    var model = new ReportBL();
    var report = model.Process(input);
    return View(report);
}
于 2019-09-06T14:48:20.093 回答