起名ASP.NET MVC 第贰次 Controller与View

那节大家让ASP.NET MVC真正的跑起来

  • 在Jquery中,$是JQuery的外号,全部应用$的地点也都得以选取JQuery来替换,如$(‘#msg’)等同于JQuery(‘#msg’)的写法。可是,当大家引进多少个js库后,在别的1个js库中也定义了$符号的话,那么大家在选拔$符号时就发出了争辨

  • 在Jquery中,$是JQuery的外号,全数应用$的地点也都能够应用JQuery来替换,如$(‘#msg’)等同于JQuery(‘#msg’)的写法。不过,当我们引进多少个js库后,在其余四个js库中也定义了$符号的话,那么大家在应用$符号时就发生了争执。上边以引进三个库文件jquery.js和prototype.js为例来展开表达.

  • 第2种情状jquery.js在prototype.js之后进展引进,如:

一、新建Controller

先是大家友好新建1个新的Controller在Controllers上点右键,添加,Controller选项

起名 1  
事后出现两个对话框:

起名 2  
此地我们将之起名称为EiceController 
暗中认可生成的代码如下:

    //记不记得前面讲过的,所有Controller都要继承于Controller类
    public class EiceController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }
    }
  1. <script src=”prototype.js” type=”text/javascript”/>

  2. <script src=”jquery.js” type=”text/javascript”/>

二、新建View文件

理所当然,除了Controller大家还要建个View,先在Views中国建工业总会公司个Eice文件夹,然后我们要在中间建个Index.aspx。

唯独除了ASP.NET MVC还为大家提供了一种新建View的快速情势。

在对应的Controller的Action中式点心右键,选用Add View。

起名 3 

之后弹出窗口

起名 4

分明好View文件名字及母版文件后点Add就建好了一个View文件。

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
   Index
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <h2>Index</h2>
</asp:Content>

假使要建无母版页面勾去select master page即可。

在那种地方下,我们在自个儿的js代码中如下写的话:

三、编辑Controller、View完毕2个简单的页面传值

我们将EiceController的Index改写为

    public class EiceController : Controller
    {
        public ActionResult Index(string id)
        {
            ViewData["chsword"] = id;
            return View();
        }
    }

在View文件即/Views/Eice/Index.aspx中改写

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
   Index
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<%=ViewData["chsword"] %>
</asp:Content>

上边大家来做客/Eice/Index/HellowEice,能够看出:

起名 5

这么大家就将三个值从Url传到Controller,又从Controller传到View突显出来。

由地方程序段能够看到Action的参数string
id用于吸收接纳{Controller}/{Action}/{id}的ID部分

ViewData是一个页面间的IDictionary用于Controller向View传递数据 
如此View与Controller就足以合作完结展现页面与逻辑处理的劳作了

 

那除了ViewData之外大家还有何措施由Controller向View文件传值?我们除了能显得aspx文件外仍可以呈现别的的文本么?

$(‘#msg’).hide();

起名,$永远代表的是jquery中定义的$符号,也足以写成JQuery(‘#msg’).hide();假若想要使用prototype.js中定义的$,大家在后头再介绍。

 

  • 第二种意况:jquery.js在prototype.js以前开展引进,如: 
  1. <script src=”jquery.js” type=”text/javascript”/>

  2. <script src=”prototype.js” type=”text/javascript”/>

在那种气象下,大家在投机的js代码中如下写的话:

$(‘#msg’).hide();

$此时期表的prototype.js中定义的$符号,假若我们想要调用jquery.js中的工厂选取函数作用的话,只可以用全称写法JQuery(‘#msg’).hide().

  • 下边先介绍在首先种引进js库文件相继的动静下,如何科学的应用差别的js库中定义的$符号

     

    一.使用JQuery.noConflict()  该格局的机能正是让Jquery扬弃对$的全体权,将$的控制权交还给prototype.js,因为jquery.js是后引入的,所以最后拥有$控制权的是jquery。它的重回值是JQuery。当在代码中调用了该 方法之后,大家就不得以选拔$来调用jquery的主意了,此时$就表示在prototype.js库中定义的$了。如下:

    JQuery.noConflict();

//此处不可以再写成$('\#msg').hide(),此时的$代表prototype.js中定义的$符号。   
JQuey('\#msg').hide(); 

自此以后$就代表prototype.js中定义的$,jquery.js中的$无法再使用,只能使用jquery.js中$的全称JQuery了。 

 

**二.自定义JQuery的别名   
**如果觉得第一种方法中使用了JQuery.noConflict()方法以后,只能使用JQuery全称比较麻烦的话,我们还可以为JQuery重定义别名。如下: 

var $j=JQuery.noConflict();   
$j('\#msg').hide();//此处$j就代表JQuery   
自此以后$就代表prototype.js中定义的$,jquey.js中的$无法再使用,只能使用$j来作为jquey.js中JQuery的别名了。 

 

**三.使用语句块,在语句块中仍然使用jquery.js中定义的$,如下:****  
**JQuery.noConflict();   
JQuery(document).ready(function($){   
$('\#msg').hide();//此时在整个ready事件的方法中使用的$都是jquery.js中定义的$.   
}); 

或者使用如下语句块: 

(function($){   
.....   
$('\#msg').hide();//此时在这个语句块中使用的都是jquery.js中定义的$.   
})(JQuery)  


如果在第二种引入js库文件顺序的情况下,如何使用jquery.js中的$,我们还是可以使用上面介绍的语句块的方法,如: 
  1. <script src=”jquery.js” type=”text/javascript”/>

  2. <script src=”prototype.js” type=”text/javascript”/>

  3. <script type=”text/javascript”>

  4. (function($){

  5. …..

  6. $(‘#msg’).hide();//此时在这么些语句块中应用的都以jquery.js中定义的$.

  1. })(JQuery)

  2. </script>

那种使用语句块的办法十二分有用,在大家自身写jquery插件时,应该都接纳那种写法,因为咱们不理解具体育工作作进度中是何许顺序引进各个js库的,而那种语句块的写法却能屏蔽争辩。

  • (function($){})(jQuery)

    1 首先(function(){})()这种写法 是开创了贰个匿名的办法并立刻执行(function(){})那一个是匿名方式前边的括号正是马上调用了这些点子)。
    如此做可以创制3个效能域以确定保障内部变量与表面变量不产生争持,比如$ jQuery
    等jquery内部定义的变量。

    2(function($){})(jQuery) 这几个写法首要的效果依然力保jquery不与别的类库或变量有争论 首先是要确定保障jQuery这些变量名与表面没有冲突(jquery内部$与jQuery是同2个事物 有八个名字的缘故即便怕$与别的变量名有龃龉2jQuery与此外变量争论的可能率相当小)并传到匿名对象,匿名对象给参数起名为做$(其实和jquery内部是1模一样的) 然后您就足以任意的在(function($){})(jQuery)里写你的插件而不供给思量与外场变量是或不是存在争执

 

原稿转发地址:
http://www.jb51.net/article/44977.htm(如有不当之处还请通知)

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图