• mvc学习经典


    1.mvc传参

    传参数DeptEdit?DeptId=efdc5312-8f32-4605-8329-28565f384b2c

    那么在相应Controller有对应方法 public ActionResult DeptEdit(string DeptId),这个DeptId和参数名称得一致

    2.viewbag和viewdata

    其实没啥区别,ViewBag其实本质就是ViewData,只是多了层Dynamic控制。

    http://www.cnblogs.com/wintersun/archive/2012/01/21/2328563.html

    http://www.cnblogs.com/lindaWei/archive/2013/01/15/2860028.html

    3.Entity Framework中IQueryable, IEnumerable, IList的区别

    http://www.cnblogs.com/hiteddy/archive/2011/10/01/Difference_among_IQueryable_IEnumeralb_IList_in_Entity_Framework.html

    http://www.cnblogs.com/chengxiaohui/articles/2088837.html

    http://weishangxue.blog.163.com/blog/static/21575188201131621956899/

    IList(IList<T>)会立即在内存里创建持久数据,这就没有实现“延期执行(deferred execution)”

    IQeurable(IQuerable<T>)不会立即在内存里创建持久数据,只有遍历它(如通过foreach)、把它转换成List(ToList)等情况下才会向内存加载数据,它可以实现“延期执行”

     一言以蔽之,本地数据源用IEnumerable<T>,并且查询的逻辑可以直接用你所定义的方法的逻辑(因为有上下文),远程数据源用IQueryable<T>,无法直接使用你所定义的方法的逻辑,必须先生成表达式树,查询由源对象处理。

    看看例子更明白:

    首先是本地数据源:

                List<string> names = new List<string> { "Cai", "Wxied", "Beauty" };

               然后我们看看names的where方法

                 VS的智能提示会告诉我们,这个扩展方法有2个重载,必须传入Func<T>,返回IEnumerable<T>。

               再让我们来看看一个远程数据源:

                DataClasses1DataContext dataContext = new DataClasses1DataContext();

                dataContext.Customers.Where这个方法有4个重载。必须传入Expression<Func<T>>,返回IQueryable<T>。

    http://www.cnblogs.com/chengxiaohui/articles/2088837.html

     IQueryable接口与IEnumberable接口的区别:  IEnumerable<T> 泛型类在调用自己的SKip 和 Take 等扩展方法之前数据就已经加载在本地内存里了,而IQueryable<T> 是将Skip ,take 这些方法表达式翻译成T-SQL语句之后再向SQL服务器发送命令,它并不是把所有数据都加载到内存里来才进行条件过滤。

    4.两个问号??

    C#中两个问号的作用是判断??左边的对象是否为null,如果不为null则使用??左边的对象,如果为null则使用??右边的对象。

    比如:a = b ?? c,如果b为null,则a = c,如果b不为null,则a = b。

    5.post和get

    http://zhidao.baidu.com/link?url=JOJRQTMWlHlCbZlqyUZnJCnAiL7R1o1fImESNJg4_5-8rvbmMstMMCb2nPqQo8yfbKJIRVW0Lgbqrqw93VtJP_

    6.ValidateAntiForgeryToken

    禁止跨站攻击

    7.Bundle捆绑压缩技术

    Script文件引用:@Scripts.Render(virtualPath[,virtualPath1][,virtualPath2][,...])
    CSS文件引用: @Styles.Render(virtualPath[,virtualPath1][,virtualPath2][,...])

     bundles.Add(new ScriptBundle("~/ad/Scripts/shared_standardnav.js").Include("~/Areas/Admin/Scripts/shared_standardnav.min.js"));

    前面为虚地址,后面为包含的文件,可以多个。

    http://www.cnblogs.com/zxktxj/archive/2013/06/04/3116352.html

    8.C#扩展方法

    http://blog.csdn.net/todototry/article/details/5155907

    定义的时候需要用this,this是它和一般的方法的区别符。如下,这样只要引用此命名空间,所有string属性的值都拥有了以下扩展的方法了

    public static string ToL1(this string kstr) 
    {}

    9.string format

    public static string USER_ALL_MODULE = "qm_cache_all_module_{0}";
    
    string key = string.Format(QM.Common.SysConst.USER_ALL_MODULE, UserId);

    10.高内聚、低耦合

    一个类之间各种属性方法之间高度聚集,低耦合就是和每个类有尽量少的重复性的东西。

  • 相关阅读:
    Spring-IOC容器
    VUE 过滤器
    axios.post参数问题
    Stylus| vue项目中stylus和stylus-loader版本兼容问题
    SPA
    Options API 和 Composition API 的对比
    【ES6学习笔记之】Object.assign()
    vue element-ui 常用组件
    Vue调试工具
    组件
  • 原文地址:https://www.cnblogs.com/llk8/p/3510365.html
Copyright © 2020-2023  润新知