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

        }

 

    }

}