MVC中当VIEW出现dropdownlist时,在Model视图模块中如何去设置更合理

对于在页面上显示的文本框信息,我们在视图模块中定义成string就可以了,但如果是列表框呢,我们应该如何去定义更合理些呢?

起初,我使用的方法是ViewData,然后在页面中再去强类型一下,如

<%= Html.DropDownList("Type1",ViewData["Type"])%>

这种方法破坏了对象的完整性,使它脱离了与对象的关系,我在做程序开发时,提供下面这种写法:

<%= Html.DropDownList("Type1",Model.Type)%>

这种写法说明,Type是本页面模块中的一个属性,类型为列表类型SelectList,这种写法更符合面向对象的设计.

而之所以出现第一种写法,我想可能是由于我们不知道如何把一个列表设计到一个类里,或者还不能接受一个属性的类型为SelectList,可能我们还局限在int,string,bool等简单类型之中,看下我们看一下SelectList类型的属性的定义方法: 

它位于一个查询模块视图的类内部

在Controller层之中,会有对象的地方为模型的属性赋初始值,由于这种属性只在模型内部使用,所以我们把它定义为private,类的成员变量默认就是private:

在类的中定义对象后,通过类的构造方法为它赋值,这样当的对象被建立时,它的变量也就有值了,我们看到列表对象的类型没有定义成SelectList,而是定义成了它的成员列表集合List<SelectListItem>,为什么不直接定义成SelectList呢,原因就是有些情况不需要有选中的列表项,而有些情况下需要有默认的列表项,当我们定义为List<SelectListItem>后,可以方便的灵活的把它加入到指定的SelectList中,看下面是一个没有指定默认选项的:

而下面的就是指定了具体的值作为默认选择的情况

OK,到了现在,我们就可以把SelectList类型的属性直接放到View中了,这样多清晰呀!更重要的是它不会破坏模型类的完整性.

本文转自博客园张占岭(仓储大叔)的博客,原文链接:MVC中当VIEW出现dropdownlist时,在Model视图模块中如何去设置更合理,如需转载请自行联系原博主。

时间: 2024-11-02 06:10:02

MVC中当VIEW出现dropdownlist时,在Model视图模块中如何去设置更合理的相关文章

前端-求教:easy-UI tabs子面板中页面点击“处理”时,在index页中 添加新的“处理”面板;

问题描述 求教:easy-UI tabs子面板中页面点击"处理"时,在index页中 添加新的"处理"面板: 现状:只能实现在左侧的树中点击添加tabs子面板(如图中新建的两个).需求:在右侧tabs的子面板中点击"操作"的"处理"按钮.能在此页中新弹出一个处理单据的子面板.大大们,求救啊: 解决方案 http://www.cnblogs.com/hxling/archive/2011/01/17/1937273.html 解

监听-listview item中是有EditText改变时获取Postion?

问题描述 listview item中是有EditText改变时获取Postion? listview item中是有EditText, 怎么在监听每个EditText的时候获取这个EditText的Postion? 解决方案 getview时,可以给这个edittext的tag赋值postion,然后取出tag得到postion 解决方案二: 不是本地爸爸的话大把大把差不多你都能 解决方案三: 用ListView 不要重用ConvertView

MVC RC2中关于HtmlHelper给DropDownList设置初始选中值的问题

Asp.Net MVC RC2中Helper提供的DropDownList好象并不太好用,特别想给下拉框设置初始选中值的时候(可能我还没找到正确的方法) 小试了一下,有二个简单的解决办法:1.回到最原始的asp的办法,直接在view的循环中判断,具体代码就不写了,有过Asp/Php经验的一点就明白 2.自己再写一个DropDownList的重载版本,如下: Code/// <summary>        /// 生成下拉列表        /// </summary>      

redirect-spring mvc 重定向,手动拼接参数时,参数中带有中文为什么会出现丢字的现象?

问题描述 spring mvc 重定向,手动拼接参数时,参数中带有中文为什么会出现丢字的现象? spring mvc 重定向,手动拼接参数时,参数中带有中文为什么会出现丢字的现象?如:redirect:/search.htm?query=蘑菇音乐节,跳转的时候发现蘑菇音这三个字丢了,求大神

MVC中对VIEW的理解,通过前台BaseController来理解面向对象

首先它是一个具有返回类型为ViewResult的一个方法,也就是说,我们可以通过返回ViewResult对象来代替View()方法,下面的操作是合法的     ViewData.Model = model;            return new ViewResult            {                ViewName = viewName,                MasterName = this.MasterFile,                View

ASP.NET MVC 5 - 验证编辑方法(Edit method)和编辑视图(Edit view)

原文:ASP.NET MVC 5 - 验证编辑方法(Edit method)和编辑视图(Edit view) 在本节中,您将验证电影控制器生成的编辑方法(Edit action methods)和视图.但是首先将修改点代码,使得发布日期属性(ReleaseDate)看上去更好.打开Models \ Movie.cs文件,并添加高亮行如下所示: using System; using System.ComponentModel.DataAnnotations; using System.Data.

解决在onCreate()过程中获取View的width和Height为0的4种方法

很经常当我们动态创建某些View时,需要通过获取他们的width和height来确定别的view的布局,但是在onCreate()获取view的width和height会得到0.view.getWidth()和view.getHeight()为0的根本原因是控件还没有完成绘制,你必须等待系统将绘制完View时,才能获得.这种情况当你需要使用动态布局(使用wrap_content或match_parent)就会出现.一般来讲在Activity.onCreate(...).onResume()方法中

用PHP开始你的MVC (四)实现View层

MVC模式的view层的主要任务是进行页面的和结果的显示工作,在php的实现过程中,主要是体现为一个模板(使用模板,可以达到php代码和html代码分离的目的,这样代码和页面的维护就方便多了,便于管理和页面的更换,可以真正的划分程序员.美工的分工)的解析过程:首先,controler层从model层得到数据其次,controler层将数据交给view层再次,view层的接口将数据按一定的方式传给模板解析类,最后,模板解析类将数据解析到模板中,然后显示. 下面是一个具体的实现例子目录结构 |- C

理解Asp.net中的View state

asp.net 什么是ViewState?对于ViewState,我们有许多的误解.Viewstate不保存控件,而是去保存form中对应ID控件的值,特别是那些由于他们没有和form一起post 而在页面回传时会丢失的控件的值.viewstate一般不要用来保存session或在页面间传输数据.在页面回传后,viewstate不能用来动态地创建页面的控件.他在页面回传之后不回复控件的值.甚至一个控件的viewstate被禁止了,在页面回传后,控件的值仍然不会丢失,比如textbox,dropd