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中了,这样多清晰呀!更重要的是它不会破坏模型类的完整性.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了