对于ASP.NET MVC中页面强类型的个人理解
进入ASP.NET MVC学习
发现很多和winfrom不同的东西,但是利用的C#语言还是没有变化,更多的是利用了新的语言,html jquery
ajax.....唉 心累,一本书一本书看的去 看完了 回想起来的时候是很快乐的,在此说一说学习之中遇到的比较深的坎:
在对于页面强类型学习的时候,刚开始感觉还是很轻松的,不就是直接在Controller中用一次viewdata["***"]=value并且在View中通过@model
**** 就可以了嘛,又或是直接利用ViewData.Model做更简单的事,还有viewbag,tempdata等就不说了,
但是呢,自从遇到一次坎后才知道,并不是那么简单,比如说viewdata使用的基本原理是利用键值对形式,但是呢这个object对应的保存的数据到底是什么类型的呢,是用object抽象形式保存还是用原生的形式呢,比如说我有一个ProductCategory的类,并且进行var
pro = new
ProductCategory(***)创建一些信息,在通过ViewData["objPC"]=pro;那么这个pro保存在objPC保存的形式类型是哪种呢?object
or ProductCategory?
如果是说保存为object那么在view里写入@model ProductCategory
也就说的通顺了,再次进行强制转换嘛。实际上呢,不引用这那句话,在view里直接写Model并且通过点的形式调用其成员,也是行得通的,只不过Model去调用的话必须要保证那个属性或是方法一定存在那个值的类型之中,也就证明了一点,value的值传给viewdata保存时并不是用object形式进行保存的,而是用它的原生形式,
@model
ProductCategory的引入只是为了在View中强制这个传入的值的类型,并且为了在编写代码的时候出现的错误少点,而@using
***更是和C#中的使用是一样的,毕竟@下就是c#代码了。
最后在说下在linq查询的条件下,通过controller传递过来的并不是确定的类型,什么意思呢,传过来的其实还是查询语句,并且此时查看Model的值时,也是显示一个查询语句,这归因于是使用延时加载的原因,当真正需要的时候再去查询,并且查询出来的类型大多数是利用的IQueryable<>类型,因此在View中提前指定好强类型页面也是可以的,毕竟知道了这个传过来的集合的类型是已经确定的,怎么不利用它里面的属性做更多的事情呢。
ASP.NET
MVC第一次讲解在这里先告一段落,毕竟我也是刚刚学习不长时间的入门者,但是这种MVC的思想值得我们在生活中去借鉴,Separation
of Concerns.
对于ASP.NET MVC中页面强类型的个人理解的更多相关文章
- ASP.NET MVC教程四:ASP.NET MVC中页面传值的几种方式
准备 在Models文件夹里面新添加Student实体类,用来模拟从Controller向View传递数据,Student类定义如下: using System; using System.Colle ...
- ASP.net MVC中页面跳转
@Html.ActionLink("Home Name", "Index", "Home")Home name 是 跳转链接的名Index ...
- ASP.NET MVC中的cshtml页面中的下拉框的使用
ASP.NET MVC中的cshtml页面中的下拉框的使用 用上@Html.DropDownList 先记下来..以做备忘...
- 《Entity Framework 6 Recipes》中文翻译系列 (20) -----第四章 ASP.NET MVC中使用实体框架之在MVC中构建一个CRUD示例
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第四章 ASP.NET MVC中使用实体框架 ASP.NET是一个免费的Web框架 ...
- 在 ASP.NET MVC 中充分利用 WebGrid (microsoft 官方示例)
在 ASP.NET MVC 中充分利用 WebGrid https://msdn.microsoft.com/zh-cn/magazine/hh288075.aspx Stuart Leeks 下载代 ...
- [摘]在ASP.NET MVC中使用DropDownList
在ASP.NET MVC中,尽管我们可以直接在页面中编写HTML控件,并绑定控件的属性,但更方便的办法还是使用HtmlHelper中的辅助方法.在View中,包含一个类型为HtmlHelper的属性H ...
- ASP.NET MVC中使用DropDownList
在ASP.NET MVC中,尽管我们可以直接在页面中编写HTML控件,并绑定控件的属性,但更方便的办法还是使用HtmlHelper中的辅助方法.在View中,包含一个类型为HtmlHelper的属性H ...
- Asp.net MVC中 Controller 与 View之间的数据传递
在ASP.NET MVC中,经常会在Controller与View之间传递数据 1.Controller向View中传递数据 (1)使用ViewData["user"] (2)使用 ...
- 在ASP.NET MVC中使用DropDownList
在ASP.NET MVC中,尽管我们可以直接在页面中编写HTML控件,并绑定控件的属性,但更方便的办法还是使用HtmlHelper中的辅助方法.在View中,包含一个类型为HtmlHelper的属性H ...
随机推荐
- Openjudge — 7624 山区建小学
问题描述 政府在某山区修建了一条道路,恰好穿越总共m个村庄的每个村庄一次,没有回路或交叉,任意两个村庄只能通过这条路来往.已知任意两个相邻的村庄之间的距离为di(为正整数),其中,0 < i & ...
- mysql数据库 ,java 代码巧妙结合提升系统性能。
查询频繁的表t_yh_transport_task 保证数据量最少,增加查询效率, 常用于查询的字段增加索引, 每日定时移动数据 <!-- 医院系统预约任务历史删除定时器 --> & ...
- 3A
# -*- coding: utf-8 -*- import datetime, time, heapq, cx_Oracle #2rd sheet def get_5mins_3A_LOG(): c ...
- Egret的按钮事件处理
首先要在exml内要设置有对应按钮的ID 2,编写TypeScript脚本: public mybutton:eui.Button; 函数内部:this.mybutton.addEventListen ...
- js活jQuery实现动态添加、移除css/js文件
下面是在项目中用到的,直接封装好的函数,拿去在js中直接调用就可以实现css.js文件的动态引入与删除.代码如下 动态加载,移除,替换css/js文件 // 动态添加css文件 function ad ...
- golang 内存模型
1,是什么 是一套规范.内存操作指导 解决多线程编程的 程序的 原子性,有序性,可见性(主要)的问题. 多核操作系统,会存在缓存不一致的情况,说到底是一个同步的问题. 2, 内容 内存模型,除了定义了 ...
- 180815 Python自学成才001
1.为什么学习Python? Python:脚本语言,易入门,可移植. Python适用范围:web开发.自动化测试工具编写. 适用岗位:运维开发(运维).自动化测试(软件测试).Python开发(软 ...
- RDD算子
RDD算子 #常用Transformation(即转换,延迟加载) #通过并行化scala集合创建RDD val rdd1 = sc.parallelize(Array(1,2,3,4,5,6,7,8 ...
- jQuery倒计时组件(jquery.downCount.js)
//html <span class="days">00</span> <span class="hours">00< ...
- react-native模拟机调试步骤详解 ——亲测有效!!!!
步骤 1 下载安装夜神模拟器,去夜神官网下载即可!然后安装完成!进入到初始化项目的目录,打开cmd命令,运行adb connect 127.0.0.1:62001 链接模拟器 2 链接完成之后,运行安 ...