信息发布系统 Jquery+MVC架构开发(7) Controller层 .

Controller 这一层首先要添加对WCF 的引用:

 

如下,输入我们自己的wcf地址

http://localhost:8732/Design_Time_Addresses/InfoPub.BLLService/Service1/mex

 

为了解析嵌套结构的类,我们加入JsonBinder

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Mvc;

using System.Web.Script.Serialization;

 

namespace InfoPub.Controllers

{

    public class JsonBinder<T> : IModelBinder

    {

        public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)

        {

            // 从䨮请?求¨®中D获?取¨?提¬¨¢交?的Ì?参?数ºy数ºy据Y

            var json = controllerContext.HttpContext.Request.Form[bindingContext.ModelName] as string;

 

            // 提¬¨¢交?参?数ºy是º?对?象¨®

            if (json.StartsWith("{") && json.EndsWith("}"))

            {

                JavaScriptSerializer js = new JavaScriptSerializer();

                object obj = js.Deserialize<T>(json);

                return obj;

            }

 

            // 提¬¨¢交?参?数ºy是º?数ºy组Á¨¦

            if (json.StartsWith("[") && json.EndsWith("]"))

            {

                JavaScriptSerializer js = new JavaScriptSerializer();

                List<T> obj = js.Deserialize<List<T>>(json);

 

                return obj;

            }

 

 

            return null;

        }

    }

}

我们依次添加三个controller,Infocontroller,InfoTypeContrller,UserInfoContrller,如下:

注意我们添加空的controller即可,别的controller我们暂用不到,如下:

下面我们添加Controller方法,于InfoController为例说明:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Mvc;

using InfoPub.InfoPubService;

 

namespace InfoPub.Controllers

{

    public class InfoController : Controller

    {

        private InfoPubServiceClient infoPubService = new InfoPubServiceClient();

 

        public JsonResult GetInfoList([ModelBinder(typeof(JsonBinder<SearchInfo>))]SearchInfo searchInfo)

        {

            InfoList infoList = new InfoList();

            infoList = infoPubService.GetInfoList(searchInfo);

            if (infoList.infoResult.Code != 0)

            {

                return Json(new { Data = infoList, isSuccess = false, message = "GetInfoList fail ", errorCode = infoList.infoResult.Code }, "text/json", JsonRequestBehavior.AllowGet);

            }

 

            return Json(new { Data = infoList, isSuccess = true }, "text/json", JsonRequestBehavior.AllowGet);

        }

 

        public JsonResult GetInfoById(int infoId)

        {

            InfoList infoList = new InfoList();

            infoList = infoPubService.GetInfoById(infoId);

            if (infoList.infoResult.Code != 0)

            {

                return Json(new { Data = infoList, isSuccess = false, message = "GetInfoById fail ", errorCode = infoList.infoResult.Code }, "text/json", JsonRequestBehavior.AllowGet);

            }

 

            return Json(new { Data = infoList, isSuccess = true }, "text/json", JsonRequestBehavior.AllowGet);

        }

 

        public JsonResult AddInfo(Info info)

        {

            InfoResult infoResult = new InfoResult();

            infoResult = infoPubService.AddInfo(info);

            if (infoResult.Code != 0)

            {

                return Json(new { Data = infoResult, isSuccess = false, message = "AddInfo fail ", errorCode = infoResult.Code }, "text/json", JsonRequestBehavior.AllowGet);

            }

 

            return Json(new { Data = infoResult, isSuccess = true }, "text/json", JsonRequestBehavior.AllowGet);

        }

 

        public JsonResult UpdateInfo(Info info)

        {

            InfoResult infoResult = new InfoResult();

            infoResult = infoPubService.UpdateInfo(info);

            if (infoResult.Code != 0)

            {

                return Json(new { Data = infoResult, isSuccess = false, message = "UpdateInfo fail ", errorCode = infoResult.Code }, "text/json", JsonRequestBehavior.AllowGet);

            }

 

            return Json(new { Data = infoResult, isSuccess = true }, "text/json", JsonRequestBehavior.AllowGet);

        }

 

        public JsonResult DeleteInfo(int infoId)

        {

            InfoResult infoResult = new InfoResult();

            infoResult = infoPubService.DeleteInfo(infoId);

            if (infoResult.Code != 0)

            {

                return Json(new { Data = infoResult, isSuccess = false, message = "DeleteInfo fail ", errorCode = infoResult.Code }, "text/json", JsonRequestBehavior.AllowGet);

            }

 

            return Json(new { Data = infoResult, isSuccess = true }, "text/json", JsonRequestBehavior.AllowGet);

        }

 

    }

}

posted @   似水流年-johnhuo  阅读(1002)  评论(1编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
点击右上角即可分享
微信分享提示