问题描述
1.Html.TextBox("name")可以通过控制器里ViewData["name"]赋值为什么Html.TextBoxFor不行?2.假如要从数据库读取一个省市区这种结构或者层数更多的数据在View里显示我现在只会把它放到ViewData这种属性里再传到View然后在View里循环用Response.Write输出觉得这样页面代码很臃肿而且似乎数据从控制器传递给视图时绕过了Model不知道有没有更好的办法
解决方案
解决方案二:
1.Html.TextBox("name")可以通过控制器里ViewData["name"]赋值为什么Html.TextBoxFor不行?因为Html.TextBoxFor是给强类型Model用的,MVC框架的规则2.假如要从数据库读取一个省市区这种结构或者层数更多的数据在View里显示我现在只会把它放到ViewData这种属性里再传到View然后在View里循环用Response.Write输出觉得这样页面代码很臃肿而且似乎数据从控制器传递给视图时绕过了Model不知道有没有更好的办法我喜欢用静态类和静态方法返回SelectItem
解决方案三:
而且似乎数据从控制器传递给视图时绕过了Model这句是什么意思呢?在我感觉中View还是控制器没什么区别。
解决方案四:
引用1楼moonwrite的回复:
1.Html.TextBox("name")可以通过控制器里ViewData["name"]赋值为什么Html.TextBoxFor不行?因为Html.TextBoxFor是给强类型Model用的,MVC框架的规则2.假如要从数据库读取一个省市区这种结构或者层数更多的数据在View里显示我现在只会把它放到ViewData这种属性里再传到View然后在View里循环用Response.Write输出觉得这样页面代码很臃肿而且似乎数据从控制器传递给视图时绕过了Model不知道有没有更好的办法我喜欢用静态类和静态方法返回SelectItem
恩是这样的,SelectItem这个非常好用
解决方案五:
1、一个是强类型啊,比如你是单个参数就直接用name取到了,那如果你是一个类或者一个集合之类的通过viewdata可以,通过model=>mode.name就取到了2、你可以先声明一个集合用来将省市的集合填充进来数据填充,也可以动态从数据库去取publicstaticList<SelectListItem>BindTaskType(){List<SelectListItem>taskType=newList<SelectListItem>();taskType.Add(newSelectListItem{Text="请选择",Value="",Selected=true});taskType.Add(newSelectListItem{Text="固定任务",Value="1"});taskType.Add(newSelectListItem{Text="随机任务",Value="2"});returntaskType;}这里在controller中输出ViewData["TaskType"]=BindData.BindTaskType();在页面绑定@Html.DropDownList("AwardType",ViewData["AwardType"]asSelectList)