对于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 ...
随机推荐
- 在WINDOWS中安装使用SIGPACK(MinGW64+Sublime Text3 &Visual Studio)
本文介绍在Windows下安装使用SigPack库,涉及Armadillo.OpenBLAS安装使用说明,最终实现对SigPack示例CPP基于MinGW64在Sublime Text3下的编译运行, ...
- Ubuntu zsh shell 一站式解决方案
#!/bin/bash sudo apt-get install zsh python -y sudo apt-get install python-pip -y sh -c "$(curl ...
- (转)CentOS7中防火墙的基本操作
目录 1.firewalld简介 2.安装firewalld 3.运行.停止.禁用firewalld 4.配置firewalld 5 打开端口 学习apache安装的时候需要打开80端口,由于cent ...
- iOS 上传自己的工程(模块工具类)到cocoapods上遇到坑
最近在研究把自己写的工具类和模块上传到cocoapods上, 再新构建项目中可以直接使用cocoapods使用 也可以更新之前的版本 便于维护项目. 但是在这个过程中遇到了种种问题 但是最后还是解决 ...
- 「雅礼集训 2017 Day5」矩阵
填坑填坑.. 感谢wwt耐心讲解啊.. 如果要看这篇题解建议从上往下读不要跳哦.. 30pts 把$A$和$C$看成$n$个$n$维向量,那$A_i$是否加入到$C_j$中就可以用$B_{i,j}$表 ...
- VS Code 常用插件
1.Chinese (Simplified) Language Pack for Visual Studio Code VS Code软件汉化 2.Auto Close Ta ...
- django restframework
一.django restframework 请求流程源码剖析 上面的认证一个流程是rest_framework的关于APIauth的认证流程,,这个流程试用权限.频率.版本.认证.这个四个组件都是通 ...
- ajax一些东西
jquery中的ajax方法参数总是记不住,这里记录一下. 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为String类型的参数,请求方式(p ...
- MySql解除安全模式:Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column.
在修改一条数据字段时报错: Error Code: 1175. You are using safe update mode and you tried to update a table witho ...
- framework7 入门(基础布局)
个人认为framework7是个很好的移动端框架,自带路由.下拉刷新.无限加载.时间线.各种dialog.环形图等,基本能满足大部分app的需求,可以和vue,webpack 等各种搭配. 这里讲一下 ...