MVC学习笔记(六)---遇到的小问题汇总
一、MVC中Controller中返回两个对象的写法如下:
- return Json(new { code = , msg = "成功", user = user, userInfo = person });
二、前台向后台传入带有html标签的字符串,需要在后台Controller前加入[ValidateInput(false)]
- [HttpPost]
- [ValidateInput(false)]
- public ActionResult Test(string str)
- {
- return Content("test");
- }
三、枚举用法的总结:
工程目录结构如下:
Enum_Type中的代码如下:
- namespace Common.Enum
- {
- public enum Enum_Type
- {
- 未发送 = ,
- 发送成功 = ,
- 发送失败 =
- }
- }
A.在前台(Index.cshtml)用枚举
(1)在web项目中添加Common类库的引用
(2)记得要在Index.cshtml页面头部添加引用
- @using Common.Enum;
- <h2>Index</h2>
- <ul>
- <li data-id="@Convert.ToInt32(Enum_Type.未发送)">@Enum_Type.未发送</li>
- <li data-id="@Convert.ToInt32(Enum_Type.发送成功)">@Enum_Type.发送成功</li>
- <li data-id="@Convert.ToInt32(Enum_Type.发送成功)">@Enum_Type.发送失败</li>
- </ul>
- <select>
- <option value="@Convert.ToInt32(Enum_Type.未发送)">@Enum_Type.未发送</option>
- <option value="@Convert.ToInt32(Enum_Type.发送成功)">@Enum_Type.发送成功</option>
- <option value="@Convert.ToInt32(Enum_Type.发送成功)">@Enum_Type.发送失败</option>
- </select>
效果(样式我都没写,只是想展示下效果)
(3)在js里的用法
- <script type="text/javascript">
- var state = 0;
- if(state=='@((int)Enum_Type.未发送'))
- {
- }
- </script>
B.枚举常用的方法(我每次用每次查,捂脸中)
- //根据名称获取对应的数字,结果为:3
- int enum_Int =(int) Enum.Parse(typeof(Enum_Type), "发送失败");
- //根据数字获取名称,结果为发送失败
- string enum_String = Enum.GetName(typeof(Enum_Type), );
- //获取枚举类型的数字,结果为:3
- int enumInt = (int)Enum_Type.发送失败;
- //获取枚举类型的字符串,结果为发送失败
- string enumString = Enum_Type.发送失败.ToString();
四、controller中参数设置为可为空的方法
- [HttpPost]
- public ActionResult test(string userName,DateTime? startTime)
- {
- DateTime dt = startTime == null ? DateTime.Now : startTime.Value;
- return Content("成功");
- }
使用场景:参数startTime可以传也可以不传
五、计算分页页数需要用到的方法
- 1 //总页数
- decimal d = (decimal)((decimal)roleList.Count / length);
- roleList = roleList.OrderBy(r => r.OrderNo).Skip((start - ) * length).Take(length).ToList();
- int pageCount = Convert.ToInt32(Math.Ceiling(d));
- result.PageCount = pageCount;
六、webapi
(1)webapi中action的名称要以Get或者Post开头,来说明是用的HttpPost还是HttpGet。
(2)参数要通过[FromBody]传递,如果直接写string para,反而接收不到。
- public string PostLogin([FromBody] PostData data)
- {
- return "登录成功";
- }
PostData类里放需要的参数
- /// <summary>
- /// 参数
- /// </summary>
- public class PostData
- {
- /// <summary>
- /// 用户名
- /// </summary>
- public string userName { get; set; }
- /// <summary>
- /// 密码
- /// </summary>
- public string password { get; set; }
- }
七、根据固定数据进行数字进行四舍五入/舍去后面的数字
来源(https://www.tceic.com/708ih500l18583j0496459i9.html)
- /// <summary> /// 四舍五入 /// </summary>
- /// <param name="d">输入的数字</param>
- /// <param name="i">保留的位数</param>
- /// <returns></returns>
- private static double Round(double data, int i)
- {
- if (data >= )
- {
- data += * Math.Pow(, -(i + ));
- }
- else
- {
- data += - * Math.Pow(, -(i + ));
- }
- string str = data.ToString();
- string[] strs = str.Split('.');
- int idot = str.IndexOf('.');
- string prestr = strs[];
- string poststr = strs[];
- if (poststr.Length > i)
- {
- poststr = str.Substring(idot + , i);
- }
- string strd = prestr + "." + poststr;
- data = Double.Parse(strd);
- return data;
- }
- /// <summary> /// 小数位数值舍位 /// </summary>
- /// <param name="a">保留的数字</param>
- /// <param name="n">位数</param>
- /// <returns></returns>
- public static double Round2(double a, int n)
- {
- int b = a.ToString("").Length;
- int c = a.ToString().Length;
- int d = ; if (c > b)
- {
- d = c - b - ;
- }
- if (n < d)
- {
- string Last = a.ToString().Substring(, b + + n); a = double.Parse(Last);
- }
- return a;
- }
八、两个整数相除,精度缺失的解决办法
1.如下代码,v的数值为1
- double v = / ;
2.想要保留所得的小数的解决方法:
- //第一种方法
- decimal v = (decimal) / ;
- //第二种方法
- double v1 = 3.0 / 2.0;
九、ie浏览器会直接下载json文件解决方案
如果前台框架使用的是easyui,页面表单提交(post提交则不会出现该问题),后台返回的结果如果为下图所示,则ie浏览器会直接将json文件进行下载。
- return Json(result, JsonRequestBehavior.AllowGet);
需改为如下写法即可
- return Content(JsonConvert.SerializeObject(result));
十、winform中强制关闭所有进程
需求场景:winfrom应用程序中有N个窗体,但是要求:点击任一窗体上的关闭按钮(自定义的按钮,并非是窗体自带的),整个进程退出。
解决方法:
- System.Diagnostics.Process.GetCurrentProcess().Kill();
错误尝试: Application.Exit();System.Environment.Exit(0);均尝试,都不成功。
十一、程序中后台返回的结果类定义
- public class DataResult<T> where T : class
- {
- public DataResult()
- {
- //默认成功
- Code = ;
- DataList = new List<T>();
- }
- /// <summary>
- /// 状态码
- /// </summary>
- public int Code { get; set; }
- /// <summary>
- /// 返回信息
- /// </summary>
- public string Msg { get; set; }
- /// <summary>
- /// 返回详细码
- /// </summary>
- public int Sub_Code { get; set; }
- /// <summary>
- /// 返回详细信息
- /// </summary>
- public string Sub_Msg { get; set; }
- /// <summary>
- /// 返回数据模型
- /// </summary>
- public T Data { get; set; }
- /// <summary>
- /// 返回数据模型集合
- /// </summary>
- public List<T> DataList { get; set; }
- /// <summary>
- /// 总页数
- /// </summary>
- public int PageCount { get; set; }
- /// <summary>
- /// 总条数
- /// </summary>
- public int Total { get; set; }
- }
十二、转义特殊字符
- string test = "<scrpit>";
- string testS = HttpUtility.HtmlEncode(test);
- //对转义字符特殊处理(如果是\,前台用JSON.parse转json会报错)
- testS = testS.Replace("\\", "\\\\");
十三、Autofac.Integration.Mvc在nugut中名称为Autofac.Mvc5
写在后面的话:都是一些基本的功能,但是自己总是记不住,每次用每次需要查阅。现在记录下来方便自己进行查看。
MVC学习笔记(六)---遇到的小问题汇总的更多相关文章
- .NET MVC 学习笔记(六)— 数据导入
.NET MVC 学习笔记(六)—— 数据导入 在程序使用过程中,有时候需要新增大量数据,这样一条条数据去Add明显不是很友好,这时候最好就是有一个导入功能,导入所需要的数据,下面我们就一起来看一下导 ...
- java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)
java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessCo ...
- ASP.NET MVC 学习笔记-7.自定义配置信息 ASP.NET MVC 学习笔记-6.异步控制器 ASP.NET MVC 学习笔记-5.Controller与View的数据传递 ASP.NET MVC 学习笔记-4.ASP.NET MVC中Ajax的应用 ASP.NET MVC 学习笔记-3.面向对象设计原则
ASP.NET MVC 学习笔记-7.自定义配置信息 ASP.NET程序中的web.config文件中,在appSettings这个配置节中能够保存一些配置,比如, 1 <appSettin ...
- MVC学习笔记(四)---使用linq多表联查(SQL)
1.数据库原型(Students表中的ID和Scores表中的StudentID是对应的) 2.实现效果:查询出每个学生各个科目的成绩(用的是MVC学习笔记(三)—用EF向数据库中添加数据的架构) C ...
- MVC学习笔记索引帖
[MVC学习笔记]1.项目结构搭建及单个类在各个层次中的实现 [MVC学习笔记]2.使用T4模板生成其他类的具体实现 [MVC学习笔记]3.使用Spring.Net应用IOC(依赖倒置) [MVC学习 ...
- ASP.NET MVC学习笔记-----Filter2
ASP.NET MVC学习笔记-----Filter(2) 接上篇ASP.NET MVC学习笔记-----Filter(1) Action Filter Action Filter可以基于任何目的使用 ...
- ASP.NET MVC学习笔记-----Filter
ASP.NET MVC学习笔记-----Filter(1) Filter类型 接口 MVC的默认实现 Description Authorization IAuthorizationFilter Au ...
- Spring MVC 学习笔记一 HelloWorld
Spring MVC 学习笔记一 HelloWorld Spring MVC 的使用可以按照以下步骤进行(使用Eclipse): 加入JAR包 在web.xml中配置DispatcherServlet ...
- Learning ROS for Robotics Programming Second Edition学习笔记(六) indigo xtion pro live
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
- .NET MVC 学习笔记(一)— 新建MVC工程
一..NET MVC 学习笔记(一)—— 新建MVC工程 接触MVC有段时间了,一直想找机会整理一下,可是限于文笔太差,所以一直迟迟羞于下手,想到最近做过的MVC项目也有一些了,花点时间整理一下方便以 ...
随机推荐
- 学Redis
Redis 简介 Redis 是完全开源免费的,遵守 BSD 协议,是一个高性能的 key - value 数据库 Redis 与 其他 key - value 缓存产品有以下三个特点: Redis ...
- CodeForces 407E: k-d-sequence
题目传送门:CF407E. 题意简述: 给定非负整数 \(k,d\) 和一个长度为 \(n\)(\(1\le n\le 2\times 10^5\))的整数序列 \(a\). 求这个序列中最长的一个连 ...
- Vue中美元$符号的意思与vue2.0中的$router 和 $route的区别
vue的实例属性和方法 除了数据属性,Vue 实例还暴露了一些有用的实例属性与方法.它们都有前缀 $,以便与用户定义的属性区分开来.例如: var data = { a: 1 } var vm = n ...
- 201871010109-胡欢欢《面向对象程序设计(java)》第四周学习总结会
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...
- fiddler深入学习
参考:https://www.cnblogs.com/zhizhiyin/p/6807649.html http://blog.chinaunix.net/uid-27105712-id-373882 ...
- JRebel激活教程
JRebel的官方地址(https://zeroturnaround.com/software/jrebel),土豪可以自行去官网购买. 安装 打开IDEA-->setting-->plu ...
- Checking Types Against the Real World in TypeScript
转自:https://www.olioapps.com/blog/checking-types-real-world-typescript/ This is a follow-up to Type-D ...
- 优先队列优化的 Huffman树 建立
如果用vector实现,在运行时遍历寻找最小的两个节点,时间复杂度为O(N^2) 但是我们可以用priority_queue优化,达到O(N logN)的时间复杂度 需要注意的是priority_qu ...
- 1473. [Ioi2000]Post加强版 n log^2 n做法
1473. [Ioi2000]Post加强版 n log^2 n做法 题面 有n个城市从负方向向正方向按照1至n标号,\(d[i]\)表示城市i离原点的距离并且\(d[1] = 0\),对于\(i \ ...
- Oracle_其他人连接不上自己电脑
1. 修改文件G:\app\eric\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora文件,listener中的address中加一个你的ip开头的 ...