信息发布系统 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);
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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,谁才是开发者新宠?