SelectLists是否属于viewModels?

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

我测试了这个实现,它做了我认为我想做的事情.我不打算急于回答,因为我还没有完全审查过这个问题.

jim*_*lan 1

我将按照以下几行重构您的 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 帮助器来显示您的项目。为我工作