0

我一直在做一个项目,我的所有要求都涉及 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

4 回答 4

1

返回 aContentResult而不是 aJsonResult

public virtual ContentResult gooData()
{
    var fooresults = new fooQueries().fooTotal();
    return Content(fooresults);
}
于 2013-04-05T19:12:44.180 回答
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/

于 2013-04-05T19:42:39.440 回答
0

您可以将内容返回为:

return Content(fooresults);

但这对您将元素分开,因为 JSON 返回是不干净的。

于 2013-04-05T19:14:42.083 回答
0

要返回 Json,方法应更改如下:

public JsonResult fooData()
{
    var fooresults = new fooQueries().fooTotal();
    return  Json(fooresults , JsonRequestBehavior.AllowGet);    
}
于 2014-01-08T17:43:11.370 回答