如何使用jsonresult asp.net mvc3返回多个变量

Ira*_*ili 15 json razor asp.net-mvc-3

如何在JsonResult方法上返回多个变量

例如,我想返回这两个变量:

string result = "Successed";
string ID = "32"
Run Code Online (Sandbox Code Playgroud)

我知道如何只返回一个字符串:

return Json("Inserted");
Run Code Online (Sandbox Code Playgroud)

Shy*_*yju 50

 public ActionResult YourAction()
 {
   var result=new { Result="Successed", ID="32"};
   return Json(result, JsonRequestBehavior.AllowGet);
 }
Run Code Online (Sandbox Code Playgroud)

编辑:根据评论 "如何在客户端获取此数据"

您可以getJSON在视图中使用这样的数据

$(function(){
   $.getJSON('YourController/YourAction', function(data) {
      alert(data.Result);
      alert(data.ID);
   });
});
Run Code Online (Sandbox Code Playgroud)

确保在视图中加载了jQuery,以使此代码正常工作.


asa*_*yer 5

返回一个匿名对象。

return Json( new { Result = result, Id = ID } );
Run Code Online (Sandbox Code Playgroud)

我通常会做这样的事情:

public enum NoticeTypes
{
    Default,
    UpdateComplete,
    ResponsePending,
    Notice,
    Error,
    Redirect,
    WaitAndRetryAttempt
}
public class AjaxJsonResponse
{
    public UserNotice Notice { get; set; }
    public object Data { get; set; }
    private AjaxJsonResponse() { }
    public static JsonResult Create(UserNotice Notice,object Data)
    {
        return new JsonResult()
        { 
            Data = new 
            { 
                Notice = Notice,
                Data = Data
            } 
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

这样我就可以编写 JavaScript 来始终期望 ajax 调用以某种格式返回数据。

return AjaxResponse.Create(NoticeTypes.UpdateComplete, new 
{ 
    Result = result, 
    Id = ID 
});
Run Code Online (Sandbox Code Playgroud)

现在,您可以执行诸如 Ajax Complete 全局处理程序之类的操作,该处理程序可以拦截普通处理程序获取的内容RedirectWaitAndRetry在普通处理程序获取它之前,并采用标准方式来传达有关返回数据的附加信息,这些信息在您的应用程序中是相同的。