• MVC3;0问题与知识点


    1.  image  代码中@Html.BeginForm不对,应 @using(Html.BeginForm){}

    2.image   不设置 注解 required属性中的 errormessage,则错误信息就是 xx字段是必需的

    3.  view中 根据if提交,若true 输出@name+”退出按钮”

    4.同一解决方案中的A(mvc项目),B(EF项目)。A引用了B,在B更改后,只要A重新编译或者生成就可以自动感应到B的改动。生成的意思就是:重新引用项目中的类库。  注意此时IIS 会重启。

    5.MVC3.0客户端验证,需要引用2个jquery文件,在模版页面中引用这2文件也行,或者不在模版中直接在当前页面中引用。

    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

    @* <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />*@     css文件如果没,就不是红色显示
        <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
        <script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script>

           <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

    8.初始化dblifeshopEntitied提示无法加载指定的元数据资源

    背景:解决方案中有2个项目,一个MVC项目,一个EF项目。MVC项目中引用EF项目,应在MVC项目中的web.config中加入connectstring,并且要注意此字符串的值。

    <connectionStrings>
       <add name="DBlifeshopEntities"  connectionString="metadata=res://Lifeshop.Models/DBlifeshop.csdl|res://Lifeshop.Models/DBlifeshop.ssdl|res://Lifeshop.Models/DBlifeshop.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=MIKPLE-PCSQLEXPRESS;Initial Catalog=DBlifeshop;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
    </connectionStrings>

    红色部分Lifeshop.Models为EF项目名称,蓝色部分DBlifeshop为EF项目中的文件名。

    补充:EF项目关联到数据库后,项目下会增加一个app.config文件,里面存放了数据库路径(*/代表当前项目)

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <connectionStrings>
        <!--<add name="DB2" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=MIKPLE-PCSQLEXPRESS;Initial Catalog=DBlifeshop;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />-->

        <add name="DBlifeshopEntities"  connectionString="metadata=res://*/DBlifeshop.csdl|res://*/DBlifeshop.ssdl|res://*/DBlifeshop.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=MIKPLE-PCSQLEXPRESS;Initial Catalog=DBlifeshop;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

      </connectionStrings>
    </configuration>

    image

    8.项目中 web.config //debug.config  release.config  添加配置转换  区别是啥?

    9.  linq 从数据源取数据  (继续完善linq用法)

    从集合中取出第一个元素

    例:var adm = db.Administrator.FirstOrDefault(x => x.userName==admin.username && x.userPwd == admin.password);

      xx.First(x=>x=1)    通过条件谓词帅选的序列不能为空,否则报错

      xx.FirstOrDefault(xx)  如果空元素,返回空值null

    Single( lamba表达式) 返回序列中的一个元素,如果有多个元素就异常,如果集合为空也异常  (序列不包含任何元素,序列包含一个以上的元素)
    SingleOrDefault      多个元素异常,没元素则为空

    2.解决方案中ef(model)项目重新编译项目后,mvc无需编译,也能感知最新的变化,只要先引用了ef项目。
    3.注意实体的命名空间,如果有些类名无法访问,应该查看命名空间,注意大小写。 例如:项目中报错类型的,请查看 view页面中强类型 或者 controller页面中的 using 后的命名空间是否正确
    *类名可以与类文件名无关,引用的时候不涉及到类的文件名。

    4. 三层的定义:web,bll,dao层。  web层其实就是mvc层,或者再把model层单独分离出来。

    大概项目就分为:Lifeshop.Web,Lifeshop.models,lifeshop.bll,lifeshop.dao,还可以加入lifeshop.cache层

    web层引用 models和bll层

    bll层引用model层和dao层。  bll层用来封装和数据库操作, web层只要调用bll层的方法,并传入相关的参数就可以进行数据库操作。

            例如:web层需要验证用户有效性,

    [HttpPost,ActionName("Index")]
    public ActionResult Login(User admin)
    {

        if (ModelState.IsValid)
        {
           var adm = UserProfileBll.Get(admin);        //var adm = db.Administrator.Top(

            if (adm != null)
            {

                Session["username"] = adm.userName;
                return View("/Category/Index");
                //RedirectToAction("Index", "Category");
            }
        }
            return View();

    }

    Bll层验证用户有效性的代码

    public class UserProfileBLL
        {      
            ExtendedDBModelContainer _db = new ExtendedDBModelContainer();
            public IQueryable<UserProfile> Get(UserProfile admin)
            {
                var model = _db.Administrator.FirstOrDefault(x => x.userName==admin.username && x.userPwd == admin.password);

                return model;
            }

    }

    11.@Html.Partial("../Home/Top");

    12.

    委托是一种引用方法类型。一旦为委托分配了方法,委托将和此方法拥有完全等效的行为。
    委托方法的调用可以像其他任何方法一样,具有参数和返回值
    1)签名:函数返回类型,参数
    2)方法可以是静态方法,也可以是实例方法
    3)可以通过编程的方式更改方法调用,或者像现有类中插入新代码。
    只要知道委托的签名,就可以分配自己的委托方法

    事件:对象之间的消息传送。   如果直接调用对方给的方法,造成2个类紧密耦合,调用方对被引用方的依赖太强。
    B是事件的发布者,A是事件的响应和处理者。

    发布者发布消息,订阅者自己处理消息。
    发布者定义个委托和事件,然后将事件实例化。订阅者

  • 相关阅读:
    css文本在标签<text>内平均分布
    ES6实现去重,排序,加升序
    uni-app项目打包成小程序
    uni-app项目( uniapp滚动监听元素)
    运行vue项目:Module build failed: Error: Cannot find module 'node-sass'报错问题
    笨方法实现数量的输入与加一减一 、以及对边界值的判断禁用
    基于nuxt的前端商城pc端项目(bug记录)
    基于nuxt的商城项目pc端项目记录
    Vue学习笔记整理-长期更新
    程序员,不要创业!
  • 原文地址:https://www.cnblogs.com/StudyLife/p/3612673.html
Copyright © 2020-2023  润新知