zoukankan      html  css  js  c++  java
  • MVC中返回json数据的两种方式

    首先解释一下ActionResultIActionResult

    ActionResult一般用来返回ViewResult,PartialViewResult,JsonResult

    IActionResult一般用来返回预定义响应和错误,比如404

    MVC里面如果直接将数据返回到前端页面,我们常用的方式就是用return view();

    那么我不想直接用razor语法,毕竟razor这玩意儿实在是太难记了,还不如写ajax对接来得舒服不是

    那么我们可以这么做

    1.定义ActionResult,返回json,标记属性可以采用HttpPost,也可以是用HttpGet,按自己的需求来使用

     public ActionResult UpdateDownloadInJson(string deviceNames,string programNames)
            {
                string[] deviceName = deviceNames.Split(',');
                string[] programName = programNames.Split(',');
                List<DownloadViewModel> DownloadViewModelList = new List<DownloadViewModel>();
                foreach (string tempDeviceName in deviceName)
                {
                    var _deviceId=deviceInfoService.FindSingle<DeviceInfo>(r => r.DeviceName == tempDeviceName).Id;
                    foreach (string tempProgramName in programName)
                    {
                        int _programId = publishDetailService.Set<ProgramInfo>().Where(r => r.ProgramName == tempProgramName).FirstOrDefault().Id;
                        var progress= publishDetailService.Set<DeviceMaterial>().Where(r => r.DeviceId == _deviceId && r.ProgramId == _programId).FirstOrDefault().DownProgress;
                        DownloadViewModelList.Add(new DownloadViewModel
                        {
                            DeviceId= (int)_deviceId,
                            DeviceName = tempDeviceName,
                            ProgramName = tempProgramName,
                            DownloadProgress = (int)progress
                        });
                    }
                }
                return Json(new AjaxResult
                {
                    Result = DoResult.Success,
                    RetValue = DownloadViewModelList
                }, JsonRequestBehavior.AllowGet);
            }

    2.采用JsonResult,最主要拿来处理ajax请求

    [HttpPost]
            [HandlerAjaxOnly]
            public JsonResult CheckLogin(string username, string password, string code)
            {
                UserManage.LoginResult result = this.HttpContext.UserLogin(username, password, code);
                if (result == UserManage.LoginResult.Success)
                {
                    return Json(new AjaxResult { Result = DoResult.Success, DubugMessage = "登陆成功。" });
                }
                else
                {
                    return Json(new AjaxResult { Result = DoResult.Faild, DubugMessage = "登陆失败," + result.ToString() });
                }
            }

    具体的区别后续补充,用法基本就是这样。

    PS:

    补充部分:

    IActionResult的具体使用

    在具体定义时,可以看到,返回的结果是不一样的,这里可以返回预定义的响应,及一些错误

     public IActionResult Update(string id, Movie imovie)
            {
                var imovie = _movieService.Get(id);
                if (imovie== null)
                {
                    return NotFound();
                }
                _movieService.Update(id, imovie);
                return NoContent();
            }
  • 相关阅读:
    ios特性访问器方法(setter和getter)
    JavaScript文本收缩展开 showdetail
    MSClass (Class Of Marquee Scroll通用不间断滚动JS封装类) Ver 1.65
    拖动层 拖动div 封装js 貌似不兼容FF,郁闷
    cookie中存储json
    页面get post等查看
    瑞星杀毒软件2010年1月11日8:29:28 【免费】
    div两侧的boder断开 消失 奇怪
    用来武装Firebug的十四款Firefox插件
    在内容页中调用母版页控件、响应控件消息(用户控件、服务器控件有所不同)
  • 原文地址:https://www.cnblogs.com/yinxuejunfeng/p/9685460.html
Copyright © 2011-2022 走看看