MVC Controller返回Content而不是JSON

时间:2013-04-05 19:10:03

标签: asp.net-mvc json model controller

我一直致力于一个项目,我的所有要求都涉及JSON。但是现在我突然需要从我的模型中返回可以在输入元素值字段中使用的结果。我不能使用我曾经使用的解决方案,因为我返回的是返回的对象而不是纯文本的值。这是我一直使用的控制器模式:

public virtual JsonResult fooData()
{
    var fooresults = new fooQueries().fooTotal();
    return new JsonResult 
        { JsonRequestBehavior = JsonRequestBehavior.AllowGet, Data = fooresults };
}

有没有办法使用返回内容而不是JsonResult?我是.NET MVC框架的新手,并且在找到正确的方法时遇到了一些困难。

我目前的结果格式如下:

[{ "foo", 3 }]

相反,我更喜欢获取纯文本,以便我可以使用AJAX请求将3值传递给输入元素value =“”字段。

AJAX调用我正在使用控制器:

$.ajax({
    type: 'GET',
    url: $('#fooValue').data('url'),
    success: function (data) {
        $('#fooValue').val(data);
    }
});

data-url相当于:

../fooController/fooData

我刚刚使用T4MVC。

4 个答案:

答案 0 :(得分:1)

返回ContentResult而不是JsonResult

public virtual ContentResult gooData()
{
    var fooresults = new fooQueries().fooTotal();
    return Content(fooresults);
}

答案 1 :(得分:0)

您可以将内容返回为:

return Content(fooresults);

但是,当JSON返回时,将这些元素分开,这不会很干净。

答案 2 :(得分:0)

我不确定fooresults的形状是什么,但你应该能够将你的AJAX调用改为:

$.ajax({
   type: 'GET',
   url: $('#fooValue').data('url'),
   success: function (data) {
    $('#fooValue').val(data.foo);
   }
});

如果没有明确设置jQuery ajax调用的dataType属性,那么jQuery将尝试根据MIME类型推断返回结果的类型,在您的情况下,它将是JSON。因此,jQuery会将JSON反序列化为JSON对象。有关详细信息,请参阅http://api.jquery.com/jQuery.ajax/

答案 3 :(得分:0)

返回一个Json,该方法应改为:

public JsonResult fooData()
{
    var fooresults = new fooQueries().fooTotal();
    return  Json(fooresults , JsonRequestBehavior.AllowGet);    
}