Dou*_*ain 11 c# viewmodel asp.net-mvc-3
在阅读了这个问题后, ASP.NET MVC:将ViewModels嵌套在彼此之内,反模式还是没有?
和Derick Bailey的评论
我认为"考虑你的viewmodel看起来像xml或json"这一点可能是最重要的一点,在这里.我经常使用该透视图来帮助我理解视图模型应该是什么样的,并帮助我理解什么数据是"viewmodel"数据与"视图的HTML呈现中的数据".有助于保持干净并将它们分开 - Derick Bailey 2011年4月11日15:45
这让我想知道如何使用数据绑定选择项为ViewModel创建View.我真的很挣扎,因为我无法想象SelectList属于哪里.如果我认为在JSON或XML方面,那么它SelectList是View Only的一部分.我想要的是一个预先填充了一个值列表的下拉列表,供用户选择Location 在ViewModel中显示它似乎是错误的,但是当我考虑将它移动到View时我不知道从哪里放置逻辑DB填充选择列表
public class SearchViewModel
{
public int? page { get; set; }
public int? size { get; set; }
//Land Related search criteria
[IgnoreDataMember]
public SelectList LocationSelection{ get; set; }
Run Code Online (Sandbox Code Playgroud)
这是一个很好的问题和答案,它与C#mvc 3密切相关, 使用了具有选定值的selectlist
我测试了这个实现,它做了我认为我想做的事情.我不打算急于回答,因为我还没有完全审查过这个问题.
我将按照以下几行重构您的 viewModel,因为我不认为选择列表应该属于 viewmodel:
public class SearchViewModel
{
public int? page { get; set; }
public int? size { get; set; }
//Land Related search criteria
public IEnumerable<Location> LocationSelection{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在您的视图中,按如下方式填充 viewModel:
public ActionResult Search()
{
var viewModel = new SearchViewModel()
{
viewModel.LocationSelection = _repository.All<Location>()
};
// any other logic here or in service class
return View(viewModel);
}
Run Code Online (Sandbox Code Playgroud)
然后在您的视图中,您将使用 html.dropdownlist 帮助器来显示您的项目。为我工作