码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2015-06-29 22:18:56      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:

 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中的前后台传值,其实知识很多的时候是相通的,看到一个之后要多想想,这里只是写理论的介绍,之后会进行详细的实例讲解。

版权声明:本文为博主原创文章,未经博主允许不得转载。

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

标签:

原文地址:http://blog.csdn.net/u010955843/article/details/46686783

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!