MVC学习笔记(六)---遇到的小问题汇总

一、MVC中Controller中返回两个对象的写法如下:

return Json(new { code = 1, 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
    {
        未发送 = 1,
        发送成功 = 2,
        发送失败 = 3
    }
}

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.枚举常用的方法(我每次用每次查,捂脸中)

1 //根据名称获取对应的数字,结果为:3
2 int enum_Int =(int) Enum.Parse(typeof(Enum_Type), "发送失败");
3 //根据数字获取名称,结果为发送失败
4 string enum_String = Enum.GetName(typeof(Enum_Type), 3);
5 
6 //获取枚举类型的数字,结果为:3
7 int enumInt = (int)Enum_Type.发送失败;
8 //获取枚举类型的字符串,结果为发送失败
9  string enumString = Enum_Type.发送失败.ToString();

四、controller中参数设置为可为空的方法

1         [HttpPost]
2         public ActionResult test(string userName,DateTime? startTime)
3         {
4             DateTime dt = startTime == null ? DateTime.Now : startTime.Value;
5             return Content("成功");
6         }

使用场景:参数startTime可以传也可以不传

五、计算分页页数需要用到的方法

1    //总页数
2      decimal d = (decimal)((decimal)roleList.Count / length);
3      roleList = roleList.OrderBy(r => r.OrderNo).Skip((start - 1) * length).Take(length).ToList();
4      int pageCount = Convert.ToInt32(Math.Ceiling(d));
5      result.PageCount = pageCount;

六、webapi

  (1)webapi中action的名称要以Get或者Post开头,来说明是用的HttpPost还是HttpGet。

  (2)参数要通过[FromBody]传递,如果直接写string para,反而接收不到。

1         public string PostLogin([FromBody] PostData data)
2         {
3             return "登录成功";
4         }

  PostData类里放需要的参数

 1         /// <summary>
 2         /// 参数
 3         /// </summary>
 4         public class PostData
 5         {
 6             /// <summary>
 7             /// 用户名
 8             /// </summary>
 9             public string userName { get; set; }
10 
11             /// <summary>
12             /// 密码
13             /// </summary>
14             public string password { get; set; }
15         }

七、根据固定数据进行数字进行四舍五入/舍去后面的数字

  来源(https://www.tceic.com/708ih500l18583j0496459i9.html)

 1         /// <summary> /// 四舍五入 /// </summary> 
 2         /// <param name="d">输入的数字</param> 
 3         /// <param name="i">保留的位数</param> 
 4         /// <returns></returns> 
 5         private static double Round(double data, int i)
 6         {
 7             if (data >= 0)
 8             {
 9                 data += 5 * Math.Pow(10, -(i + 1));
10             }
11             else
12             {
13                 data += -5 * Math.Pow(10, -(i + 1));
14             }
15             string str = data.ToString();
16             string[] strs = str.Split('.');
17             int idot = str.IndexOf('.');
18             string prestr = strs[0];
19             string poststr = strs[1];
20             if (poststr.Length > i)
21             {
22                 poststr = str.Substring(idot + 1, i);
23             }
24             string strd = prestr + "." + poststr;
25             data = Double.Parse(strd);
26             return data;
27         }

 

 1         /// <summary> /// 小数位数值舍位 /// </summary> 
 2         /// <param name="a">保留的数字</param> 
 3         /// <param name="n">位数</param> 
 4         /// <returns></returns> 
 5         public static double Round2(double a, int n)
 6         {
 7 
 8             int b = a.ToString("0").Length;
 9             int c = a.ToString().Length;
10             int d = 0; if (c > b)
11             {
12                 d = c - b - 1;
13             }
14             if (n < d)
15             {
16                 string Last = a.ToString().Substring(0, b + 1 + n); a = double.Parse(Last);
17             }
18             return a;
19         }

八、两个整数相除,精度缺失的解决办法

  1.如下代码,v的数值为1

double v = 3 / 2

  2.想要保留所得的小数的解决方法:

1             //第一种方法
2             decimal v = (decimal)3 / 2;
3             //第二种方法
4             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);均尝试,都不成功。

  十一、程序中后台返回的结果类定义

 

 1     public class DataResult<T> where T : class
 2     {
 3         public DataResult()
 4         {
 5             //默认成功
 6             Code = 1000;
 7             DataList = new List<T>();
 8         }
 9         /// <summary>
10         /// 状态码
11         /// </summary>
12         public int Code { get; set; }
13         /// <summary>
14         /// 返回信息
15         /// </summary>
16         public string Msg { get; set; }
17         /// <summary>
18         /// 返回详细码
19         /// </summary>
20         public int Sub_Code { get; set; }
21         /// <summary>
22         /// 返回详细信息
23         /// </summary>
24         public string Sub_Msg { get; set; }
25         /// <summary>
26         /// 返回数据模型
27         /// </summary>
28         public T Data { get; set; }
29         /// <summary>
30         /// 返回数据模型集合
31         /// </summary>
32         public List<T> DataList { get; set; }
33         /// <summary>
34         /// 总页数
35         /// </summary>
36         public int PageCount { get; set; }
37         /// <summary>
38         /// 总条数
39         /// </summary>
40         public int Total { get; set; }
41     }

写在后面的话:都是一些基本的功能,但是自己总是记不住,每次用每次需要查阅。现在记录下来方便自己进行查看。

转载于:https://www.cnblogs.com/jas0203/p/9818457.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值