您的位置:首页 > 编程语言 > ASP

Asp.net mvc中controller与view间的如何传递数据

2015-06-29 21:07 507 查看

 1. Asp.net中的页面指令

  无论是在java程序中还是在.net程序中,我们总是会看见一些@指令,那么这些常见指令的作用是什么呢?

  Ø @Page指令

  只能在.aspx页中使用.如果在其他页面中使用会发生编译错误.比较常见的属性有:

  1. Language

   指出在编译内联代码块和页的<script>节中出现的所有代码时所使用的语言,默认的语言是Visual Basic .NET。

  2. AutoEventWireup

   指出是否启用页事件.默认为true. VS.NET开发的页默认把该属性设置为false,因而事件单独关联到处理程序.

  3. ErrorPage

   定义目标URL,如果出现未处理的异常则自动重定向到该页.

  4. Debug

   指明是否应当用调试符号进行编译.

  5. CodeFile

   指明当前页的代码隐藏类的路径,该类的源文件必须部署到Web服务器.ASP.net 1.1中不支持该属性.

  6. CodeBehind

   Visual Studio 2003使用的属性,指出当前页的代码隐藏类的属性,该类的源文件将被编译成一个可部署的程序集.

  7. ContentType

   将响应的内同定义为标准的MIME类型.支持任何有效的HTTP内容类型字符串.

  Ø @Assembly指令

  @Assembly指令:程序指令。用于在编译时将程序集链接到页面,这是的程序员可以使用程序集公开的所有的类和方法。     @Assembly指令可以在aspx页面,.ascx文件,.master页面和.asax文件中使用。

  1.语法

   1,<%@AssemblyName="assName%"> //Name表示指定编译页面时链接的程序集

   2,<%@Assembly Src="pathName"> //Src表示指定动态编译并链接到当前页面

  Ø @Import指令

   导入指令。该指令用于将空间显示导入到ASP.NET应用程序文件中,并且导入该命名空间的所有类和接口。导入的命名空间可以是NET.Framework类库的一部分,也可以是用户定义的命名空间的一部分。

  语法:

  <%@Import namespace="value"%>

  @Import指令不能有多个namespace的属性,如果要导入多个命名空间,要使用多个@Import指令。

 2. Asp.net的前后台取值

  Ø <%%>与<scriptrunat=server>

  <%%>与<scriptrunat=server>的区别是前者是可以声明一些变量或者输出语句,可以调用服务端的函数,但是其本身是不能声明函数或者定义一个过程的。但是后者是只能放置一些方法或者属性,但是不能直接书写输出语句也就是表达式等。

  Ø <%=%>与<%#%>

  两者的共同点都是前台的页面绑定后台的变量或者返回值进行显示,不同在于前者相当于是输出也就是<%= "A" % > 相当于:Response.Write("A");,而后者相当于是赋值<%# "A" % > 相当于:变量="A";

 3. Asp.net mvc中前后台的传值

  Ø Controller向view进行传值

  包括三种方式,分别是viewData,TempData,以及viewModel,通常前两者是弱类型,而后者是强类型。

  viewData

  在Controller中定义如下:

  ViewData[“Message”] = “Hello wangxiaopeng!”;

  在View中读取Controller中定义的ViewData:

  <% = Html.Encode(ViewData[“Message”])%>,也即是相当于将数据进行了输出显示。

  此处加上了Encode的原因在于:如果明确知道输出的是一段Html编码的字符串,可以直接输出字符串。不然的话,如果字符串中带有空格或者<,这种可能引起浏览器曲解,就要加上Html.Encode进行Html编码的转换,以防出现一些不必要的错误。

  TempData同上,与viewData写法相同。

  此外还有就是强类型model

  创建视图的时候可以选择强类型,并且给你命名,此时在新建的视图上就会出现

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"Inherits="System.Web.Mvc.ViewPage<xxx>" %>,xxx代表你建立的要显示的model。

  值得一说的是TempData实际上是将数据存在在了缓存中,因为是服务端的数据,也就是存在了session中,TempData默认是使用Session来存储临时数据的,TempData中存放的数据只一次访问中有效,一次访问完后就会删除了的。这个一次访问指的是一个请求到下一个请求,因为在下一个请求到来之后,会从Session中取出保存在里面的TempData数据并赋值给TempData,然后将数据从Session中删除。

  Ø view向Controller进行传值

  后台获取前台的数据,通常是通过获取表单的数据,有:Request.Form等来获取表单的数据。

 4. 小结

  理解了asp.net中的前后台传值再来看mvc中的前后台传值,其实知识很多的时候是相通的,看到一个之后要多想想,这里只是写理论的介绍,之后会进行详细的实例讲解。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: