博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Asp.Net MVC中使用StreamReader读取“Post body”之应用场景。
阅读量:7224 次
发布时间:2019-06-29

本文共 1941 字,大约阅读时间需要 6 分钟。

场景:有三个市场(Global、China、USA),对前台传过来的数据有些验证需要细化到每个市场去完成。

所以就出现了基类(Global)和派生类(China、USA)

定义基类(Global)PersonalInformationController

public abstract class PersonalInformationController : BaseController    {        #region Abstract/Virtual Methods        //定义一个抽象方法        public abstract JsonResult ValidatePersonalInfo(string personJsonString);        #endregion  [HttpPost]        public JsonResult Validate()        {
//这里就是不急着反序列化到具体实体中,纯粹获取json数据。 string myJson = string.Empty; using (System.IO.StreamReader sr = new System.IO.StreamReader(Request.InputStream)) { myJson = sr.ReadToEnd(); } Agreement agreement = null; JsonResult jsResult = ValidatePersonalInfo(myJson); if (jsResult != null) {
return jsResult; }}

现在需要将China前台传过来的数据进行验证,其实mvc中自己实现了反序列化"Post Body",诸如:

[HttpPost]        public JsonResult Validate(TestModel model)        {///...............}

定义一个具体的实体去接收数据。那问题来了,Global中用具体的实体接收这个数据,但是不同的市场的数据是不一样的,所以这里就轮到StreamReader上场了,将json数据读取出来不急着反序列化。而是将json数据通过抽象方法传递到China的后台验证中,让它反序列化到对应的实体中。

//China市场的后台验证 public class PersonalInformationController : Global.Controllers.PersonalInformationController    {   //重写基类中function并实现. public override JsonResult ValidatePersonalInfo(string personJsonString)        {            agreement = null;            PersonalInformationViewModel personViewModel = JsonSerializer.DeserializeFromString
(personJsonString); ValidationResult validate = new PersonalInformationValidator().Validate(personViewModel); if (!validate.IsValid) { var errs = validate.Errors.Select(x => x.ErrorMessage); return Json(new { MessageType = "ValidateError", Content = errs }, JsonRequestBehavior.AllowGet); }}

 

转载于:https://www.cnblogs.com/kejie/articles/6253320.html

你可能感兴趣的文章
mysql数据库主从复制
查看>>
Shell标准输出、标准错误 >/dev/null 2>&1
查看>>
Android自定义对话框(Dialog)位置,大小
查看>>
设置python的默认编码为utf8
查看>>
简易sqlhelper-java
查看>>
通过案例对SparkStreaming 透彻理解三板斧之一:解密SparkStreaming运行机制
查看>>
HBuilder 学习笔记
查看>>
利用OpenStreetMap(OSM)数据搭建一个地图服务
查看>>
TopN算法与排行榜
查看>>
lucene排序算法之向量空间模型(一)
查看>>
新浪微博数据Json格式解析
查看>>
WLAN 802.11 wifl区别
查看>>
oracle授权动态视图权限给用户
查看>>
Debian – 出现-bash: pip: command not found错误解决办法
查看>>
Zxing扫描二维码
查看>>
我的友情链接
查看>>
aspcms后台拿shell漏洞(非添加模块)及修复方法
查看>>
C语言冒泡排序法
查看>>
B2B行业门户网站群发邮件时间及发送频率
查看>>
关于虚拟机能ping通物理机,而物理机ping不通虚拟机问题解决。
查看>>