惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
V2EX
人人都是产品经理
人人都是产品经理
WordPress大学
WordPress大学
博客园 - Franky
小众软件
小众软件
酷 壳 – CoolShell
酷 壳 – CoolShell
Apple Machine Learning Research
Apple Machine Learning Research
爱范儿
爱范儿
IT之家
IT之家
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
Visual Studio Blog
S
SegmentFault 最新的问题
美团技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
有赞技术团队
有赞技术团队
B
Blog RSS Feed
Last Week in AI
Last Week in AI
Jina AI
Jina AI
博客园 - 司徒正美
The Cloudflare Blog
博客园_首页
博客园 - 聂微东
宝玉的分享
宝玉的分享
大猫的无限游戏
大猫的无限游戏

博客园 - 似水流年-johnhuo

架构师向左,项目经理向右?? 今天迈出第一步,开始了解iphone开发 学习objective-c的一些特殊的地方 信息发布系统 Jquery+MVC架构开发(8)DAL层的补充 信息发布系统 Jquery+MVC架构开发(6)BLL层提供WCF 服务 . 信息发布系统 Jquery+MVC架构开发(5) DAL层 信息发布系统 Jquery+MVC架构开发(4) Model 层 . 信息发布系统 Jquery+MVC架构开发(3) 解决方案创建 信息发布系统 Jquery+MVC架构开发(2) 在EA下进行数据库设计 信息发布系统 Jquery+MVC架构开发(1) 需求分析和架构构思 c# 设计模式(三)行为型 c# 设计模式(二)结构型 c# 设计模式(一)创建型 .NET平台上的Model-View-Presenter模式实践 关于cmmi的一些理解及资料 iphone 开发学习 C语言指针总结 Android 开发网站,记录一下 使用 TRY/CATCH 语句解决 SQL Server 2005 死锁
信息发布系统 Jquery+MVC架构开发(7) Controller层 .
似水流年-johnhuo · 2011-07-24 · via 博客园 - 似水流年-johnhuo

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);

        }

    }

}