我在控制器里面读取出用户的相关信息,其中有性别,类型为 string,用的是Razor视图,页面上 model 的类型就是用户实体,性别下拉框有三个选项,"保密、男、女",请问我怎么把我读取到的某个用户的性别直接绑定到下拉框上?不想用Js,也不是把性别选项绑定到 List集合中然后再绑定,就是想知道MVC能不能直接绑定?
发一下代码,大家看看代码应该就能懂我的意思。
实体类:
/// <summary> 测试实体类 </summary>
public class TestViewModel
{
/// <summary> 性别 </summary>
public string Sex { get; set; }
}
Controller:
public class DataBindController : Controller
{
//
// GET: /DataBind/
public ActionResult Index()
{
TestViewModel viewModel=new TestViewModel();
viewModel.Sex = "女";
return View(viewModel);
}
}
View:
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>下拉框绑定</title>
</head>
<body>
<div>
<span>性别:</span><input type="text" value="@Model.Sex" style="text-align: center;width: 25px;"/>
<select id="Sex" name="Sex">
<option value="请选择">保密</option>
<option value="男">男</option>
<option value="女">女</option>
</select>
</div>
</body>
</html>
我想要的就是 Controller 里面设置的值能对应上 View 里下拉框的值。麻烦大家了,谢谢!
如果是DropDownListFor,那么只要实体属性有值,就会自动绑定了。
如果是DropDownList,那么需要在需要绑定的SelectListItem上,加上{Selected=true}
你没看问题描述吗?不绑定整个List集合,只是把取到的属性值绑定都页面上的下拉框中.
@晓菜鸟: 必须要设定一个List~
@幻天芒: 不会吧,您的意思是说无法直接绑定?
@晓菜鸟: 必须要设定一个下拉项的SelectList 或者 IEnumerable<SelectListItem>。如果你只想绑定一个,那么可以只添加一个值到其中。
@幻天芒: 我是只要绑定一个值,但是页面上呈现给用户的是一个下拉列表,因为用户可以选择修改,所以...
@晓菜鸟: 那就是直接DropDownListFor就行了啊~自动会绑定上的。
@幻天芒: 大哥,我很感谢您耐心的回答,但是我要的是 能不能不通过List集合就把值给绑定上去。
@晓菜鸟: 据说所知,默认是不能的。你要么用js,要么自定义一个Helper方法。
@幻天芒: 首先我表示抱歉,这几天没怎么上博客,今天才回复您,真是不好意思,感谢您的回答,自己写一个 Helper 方法,我的实现思路也是通过Js来实现的,大哥你有什么好一点的建议吗?
@晓菜鸟: 其实我觉得没啥意义,本身提供的就满足你的需求,只需要提供一个List即可,又何必再去动手搞一个呢。从select这个标签来说,就需要一个option数组和一个selectedValue。
@幻天芒: 好吧,只是这样对于我的具体情况来说麻烦了些,谢谢你了。
@晓菜鸟: 那你重写的时候,只需要在你的方法内部构造一个List,然后再调用DropDownListFor就行了。更简单!
@幻天芒: 谢谢你的回答。