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项目也有一些了,花点时间整理一下方便以 ...
随机推荐
- 手写xpath定位公式
做web自动化,之前我们已经将环境搭建好了,现在的话总结下怎么定位元素的 最基本的元素定位是有6种: driver.find_element_by_id("") driver.fi ...
- 洛谷P2680 运输计划(倍增LCA + 树上差分 + 二分答案)
[题目链接] [思路]: 根据题意可以明显看出,当所有任务都完成时的时间是最终的结果,也就是说本题要求,求出最小的最大值. 那这样的话就暗示了将答案二分,进行check. [check方法]: 如果说 ...
- WPF的依赖属性和附加属性(用法解释较全)
转:https://www.cnblogs.com/zhili/p/WPFDependencyProperty.html 一.引言 感觉最近都颓废了,好久没有学习写博文了,出于负罪感,今天强烈逼迫自己 ...
- centos7下搭建JDK和Hadoop
涉及基础操作命令 这里只是将涉及到的提了下一下具体的使用还需要读者自己查阅资料 tar 解压命令 su 进入root用户模式 rm -rf 删除 cd /文件名/.../ 进入某个文件夹下 注意要逐层 ...
- scrapy 改 scrapy-redis
1.spider 修改 class CgysSpider(scrapy.Spider): name = 'clispider' start_urls = ['https://search.bilibi ...
- Module build failed: Error: Cannot find module 'node-sass'
安装npm 遇到 Module build failed: Error: Cannot find module 'node-sass' 这次通过重装 npm 完成 先卸载npm npm uninsta ...
- 洛谷P3835 【模板】可持久化平衡树(FHQ Treap)
题面 传送门 题解 可持久化一下就好了,具体可以看代码 这里有一个小\(trick\)就是我们原本在\(merge\)的时候也要新建节点的,但是我们\(merge\)之前一般已经\(split\)过了 ...
- mysql命令查询语句&MTdata
1.单表查询 select * from student; 采用*效率低,不推荐,多用列名 一.单表查询的语法: SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY ...
- (HK1-2)海康相机直接连接电脑不经过路由器设置
解决电脑无法通过网线直连海康摄像机的问题 https://blog.csdn.net/u014552102/article/details/86708371 一.现象: 通过博主的另外一篇博客h ...
- ESP8266 LUA脚本语言开发: 准备工作-官网获取LUA固件
前言 这节咱去官网上获取lua开发的固件. 官网下载 下面是我以前写的,咱不使用官网下载的固件,咱使用自己编译的固件.. 填写好自己的的邮箱地址,然后选择好自己需要的功能,一会编译好的固件就会发到您的 ...