MV5的实际应用

  $(function(){
   var userAgent = navigator.userAgent,    
rMsie = /(msie\s|trident.*rv:)([\w.]+)/,    
rFirefox = /(firefox)\/([\w.]+)/,    
rOpera = /(opera).+version\/([\w.]+)/,    
rChrome = /(chrome)\/([\w.]+)/,    
rSafari = /version\/([\w.]+).*(safari)/;   
var browser;   
var version;   
var ua = userAgent.toLowerCase();   
function uaMatch(ua){   
  var match = rMsie.exec(ua);   
  if(match != null){   
    return { browser : "IE", version : match[2] || "0" };   
  }   
  var match = rFirefox.exec(ua);   
  if (match != null) {   
    return { browser : match[1] || "", version : match[2] || "0" };   
  }   
  var match = rOpera.exec(ua);   
  if (match != null) {   
    return { browser : match[1] || "", version : match[2] || "0" };   
  }   
  var match = rChrome.exec(ua);   
  if (match != null) {   
    return { browser : match[1] || "", version : match[2] || "0" };   
  }   
  var match = rSafari.exec(ua);   
  if (match != null) {   
    return { browser : match[2] || "", version : match[1] || "0" };   
  }   
  if (match != null) {   
    return { browser : "", version : "0" };   
  }   
}   

   $(document).ready(function(e) {
       // alert($("body").height());
  $("#jzPro6Container").height($("body").height());
  $("#swiperPage3").height($("body").height());
  
     var browserMatch = uaMatch(userAgent.toLowerCase());   
if (browserMatch.browser){   
  browser = browserMatch.browser;   
  version = browserMatch.version;   
}  
alert(browser+version);
alert(document.getElementById("f01").style.display);
vers=version.split(".");
if(browser=="IE" && parseInt(vers[0])<9)
  document.getElementById("f01").style.display="inline";
else
  document.getElementById("f02").style.display="block"; 
  
       });
  })
  


//document.write(browser+version);   
</script>

参见相关文档:http://typecastexception.com/post/2014/06/22/ASPNET-Identity-20-Customizing-Users-and-Roles.aspx

一、用户角色的平台搭建

1.新建一ASP.Net WEB 应用程序(Empty)

PM> Install-Package Microsoft.AspNet.Identity.Samples -Pre

二、使用EF6.0

参见相关文档 http://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application

在文件夹下建两个类,一个是数据库连接,一个是数据库初始化。

文档SchoolContext.cs

using ContosoUniversity.Models;

usingSystem.Data.Entity;

usingSystem.Data.Entity.ModelConfiguration.Conventions;

namespaceContosoUniversity.DAL

{

    publicclassSchoolContext:DbContext

    {

    publicSchoolContext():

    base("SchoolContext"){}

   publicDbSet<Student>Students{get;set;}

   publicDbSet<Enrollment>Enrollments{get;set;}

   public DbSet<Course>Courses{get;set;}

   protectedoverridevoidOnModelCreating(DbModelBuilder modelBuilder){

         modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();

     }

  }

}

文档schoolInitiallizer.cs

using System;

using System.Collections.Generic;

usingSystem.Linq;usingSystem.Web;

using System.Data.Entity;

usingContosoUniversity.Models;

namespaceContosoUniversity.DAL{

    publicclassSchoolInitializer:System.Data.Entity.DropCreateDatabaseIfModelChanges<SchoolContext>{

    protectedoverridevoidSeed(SchoolContext context){

            var students=newList<Student>{

           newStudent{FirstMidName="Carson",LastName="Alexander",EnrollmentDate=DateTime.Parse("2005-09-01")},

          newStudent{FirstMidName="Meredith",LastName="Alonso",EnrollmentDate=DateTime.Parse("2002-09-01")},

          newStudent{FirstMidName="Arturo",LastName="Anand",EnrollmentDate=DateTime.Parse("2003-09-01")},

          newStudent{FirstMidName="Gytis",LastName="Barzdukas",EnrollmentDate=DateTime.Parse("2002-09-01")},

          newStudent{FirstMidName="Yan",LastName="Li",EnrollmentDate=DateTime.Parse("2002-09-01")},

          newStudent{FirstMidName="Peggy",LastName="Justice",EnrollmentDate=DateTime.Parse("2001-09-01")},

         newStudent{FirstMidName="Laura",LastName="Norman",EnrollmentDate=DateTime.Parse("2003-09-01")},

         newStudent{FirstMidName="Nino",LastName="Olivetto",EnrollmentDate=DateTime.Parse("2005-09-01")}

  };

students.ForEach(s=> context.Students.Add(s));

context.SaveChanges();

            var courses=newList<Course>{

            newCourse{CourseID=1050,Title="Chemistry",Credits=3,},

            newCourse{CourseID=4022,Title="Microeconomics",Credits=3,},

            newCourse{CourseID=4041,Title="Macroeconomics",Credits=3,},

            newCourse{CourseID=1045,Title="Calculus",Credits=4,},

            newCourse{CourseID=3141,Title="Trigonometry",Credits=4,},

           newCourse{CourseID=2021,Title="Composition",Credits=3,},

           newCourse{CourseID=2042,Title="Literature",Credits=4,}};

          courses.ForEach(s=> context.Courses.Add(s));

          context.SaveChanges();

          var enrollments=newList<Enrollment>{newEnrollment{StudentID=1,CourseID=1050,Grade=Grade.A},newEnrollment{StudentID=1,CourseID=4022,Grade=Grade.C},newEnrollment{StudentID=1,CourseID=4041,Grade=Grade.B},newEnrollment{StudentID=2,CourseID=1045,Grade=Grade.B},newEnrollment{StudentID=2,CourseID=3141,Grade=Grade.F},newEnrollment{StudentID=2,CourseID=2021,Grade=Grade.F},newEnrollment{StudentID=3,CourseID=1050},newEnrollment{StudentID=4,CourseID=1050,},newEnrollment{StudentID=4,CourseID=4022,Grade=Grade.F},newEnrollment{StudentID=5,CourseID=4041,Grade=Grade.C},newEnrollment{StudentID=6,CourseID=1045},newEnrollment{StudentID=7,CourseID=3141,Grade=Grade.A},};

      enrollments.ForEach(s=> context.Enrollments.Add(s));


            context.SaveChanges();}}}

web.config中的更改。

<entityFramework><contexts><contexttype="ContosoUniversity.DAL.SchoolContext, ContosoUniversity"><databaseInitializertype="ContosoUniversity.DAL.SchoolInitializer, ContosoUniversity"/></context></contexts><defaultConnectionFactorytype="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"><parameters><parametervalue="v11.0"/></parameters></defaultConnectionFactory><providers><providerinvariantName="System.Data.SqlClient"type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/></providers></entityFramework>

或在gloable.asxa中做如下初始化

public classMvcApplication:System.Web.HttpApplication{

protectedvoidApplication_Start(){

System.Data.Entity.Database.SetInitializer(newTriviaDatabaseInitializer());

  AreaRegistration.RegisterAllAreas();

        GlobalConfiguration.Configure(WebApiConfig.Register);

        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);

        RouteConfig.RegisterRoutes(RouteTable.Routes);B

undleConfig.RegisterBundles(BundleTable.Bundles);}}



数据库的更改:

<connectionStrings><addname="SchoolContext"connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=ContosoUniversity1;Integrated Security=SSPI;"providerName="System.Data.SqlClient"/></connectionStrings>


course中外联实体的定义

using System.Collections.Generic;

usingSystem.ComponentModel.DataAnnotations.Schema;

namespaceContosoUniversity.Models{

    publicclassCourse{

        [DatabaseGenerated(DatabaseGeneratedOption.None)]

         publicintCourseID{get;set;}

        publicstringTitle{get;set;}

        publicintCredits{get;set;}

        publicvirtualICollection<Enrollment>Enrollments{get;set;}

}}

分页+搜索+排序参见以下文档。

http://www.cnblogs.com/XuebinDing/archive/2012/04/05/2432798.html


ajax调用:

参见:http://eliot-jones.com/2014/09/mvc-ajax

安装Microsoft jQuery Unobtrusive Ajax,来实现mvc-ajax

如果是异步调用要用aysnc task<>来进行异步调用


如果是在局部视图中调用js

@section Scripts{

@scripts.Render();

@Ajax.ActionLInk{}在视图中调用 ajax.


EF数据库与模型之间的关联:

nuget

Add-Migration databasename

update-database -Force


在aspnetmvc中的ajax

参见文档

http://www.cnblogs.com/easy5weikai/p/3853817.html

http://www.2cto.com/kf/201412/357068.html

 mvc5&webapi & angular

http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/build-a-single-page-application-spa-with-aspnet-web-api-and-angularjs



install-package angularjs.core


在MVC5的视图中加载外部的样式css文件
在layout中的<head>标签中设@RenderSection("head",false)
在视图中设
@section head{
@Styles.Render("~/Content/css/gridster")
@Styles.Render("~/Content/fcpower/fcpower.TemplateDashBoard.css")
}

字符串直接变为对象(eval())来获取字符串。

参见http://blog.csdn.net/skyandcode/article/details/22594355

以下几种加载部分视图:
Partial() 
Action()
RenderPartial()
RenderAction()
RenderPage()

Partial &&RendPartial
语法:@Html.Partial()
           @{Hteml.RenderPartial();}
区别:
Partial:可以直接输出内容,它内部是将Html内容转为String(MVCHtmlString),然后缓存起来,最后一次性输出到页面。RenderPartial效率更高。
partial=s.Tostring() 
RenderPartial=Response.write(s.ToString());

RenderPartial与RenderAction方法
@{Html.RenderPartial();} &&@{Html.RendAction();}
RenderPartial 不必创建Controller的Action,而RenderAction需要在Controller创建要加载的Action.
RenderAction会先调 用Controller的Action,最后再呈现视图,所以这里页面会在发起一个链接。

如果这个部分视图只是一些简单的Html代码,使用RenderPartial.如果这个部分除视图Html代码外,还需要通过读取库里的数据来渲染,就必须使用RenderAction,因为它可以在Action里调用Model里的方法读取数据库,渲染视图后再呈现,而RenderPartial没有Action,所以无法做到。

RenderAction与Action
@{Html.RenderAction();} @Html.Action();
Action可以直接输出,和partial一样,也存在一个转换的过程。不如RenderAction直接输出到当前HttpContext的效率高。


RenderPage与RenderPartial方法
@{Html.RenderPartial()}与@RenderPage()
区别:也可以用RenderPage来呈现部分,但它不能使用原视图的Model和ViewData,只能通过参数来传递。而RenderPartial可以使用原来视图的Model和ViewData

MVC 引入的部分视图(partial view)和布局(layout)其实都不是新的概念,相当于WebForm里的User Control和Master Page.原理一样,实现的技术有差别。

参见http://www.tuicoll.com/articles/UNBjei

带Model的分部视图
前面只是创建了一个静态分部视图,下面我们来把它改造一下来显示Model数据。
修改如下:
view\PartialView\index.cshtml
@Html.Partial("PartialPage",1)
@{Html.RenderPartial("PartialPage",2);
这里的1,2是我们传给partialView的Model.

修改views\shared\PartialView.cshtml
@model int 表示传入的model是int类型,
<h2>@Model.</h2>把这个数字显示出来。

使用ChildAction调用分部视图
前面调用partialview的方式都是通过一个view来调用PartialView.下面我们来介绍通过View调用ChildAction来返回PartialView.
首先在PartialViewController.cs里写一个ChildAction

[ChildActionOnly] //表示这个Action只能作为ChildAction使用。
public PartialViewResult ChildAction(DateTime tiem)
{
string greetings=string.Empty;
if(time.Hour>18)
{
  greetings="Good Evening .Now is "+time.ToString("HH:mm:ss");
}
else if(time.Hour>12)
{greetings="Good afternoon.Now is "+time.ToSting("HH:mm:ss");}
else
{greetings="Good Morning. now is "+time.ToString("HH:mm:ss");}
return PartialView("childAction",greetings);
}
ChildAction返回PartialView的好处就是在Action里可以做一些处理和控制。
建立视图后视图名为ChildAction
@model string
<h2>@Model</h>

修改views\PartialView\index.cshtml文件,代码如下:
@{
     Layout=null;
}
<h2>Before partialView</h2>
<hr/>
@Html.Action("ChildAction",new{time=DateTime.Now})
<hr/>
@{
   Html.RenderAction("ChildAction",new{time=DateTime.Now.AddHours(12)});
}

调用ChildAction同样有两种方法:
Html.Action和Html.RenderAction.它们的区别跟 Partia和Renderpartial是一样的。这两个函数的第一个参数是要调用ChildAction的名字,第二个参数是要传递的参数。参数是用匿 名对象的方法创建 的Object.

ajax无刷新更新分部视图
要通过ajax来调用ChildAction返回PartialView,首先要去掉ChildAction开头的[ChildActionOnly].

修改views\partialView\index.cshtml文件代码:
@{Layout=null}
<script src="jquery"></script>
<script>
setInterval(LoadAction,1000);
function LoadAction()
{
var time=new Date();
$.ajax{
 var time=new Date();
$.ajax({
  type:"post",
  url:'@Url.Action("ChildAction","PartialView"),
data:{time:time.getHours()+":"+time.getMinutes()+":"+tiem.getSeconds()},
datatype:"json",
success:function(data){
  $('#head').html(data);
},
error:function(XMLHttpRequest,textStatus,errorThrown){alert(errorThrown);}
})
}
}
</script>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值