选择列表是否属于视图模型
本文关键字:视图 模型 属于 是否 列表 选择 | 更新日期: 2023-09-27 18:36:26
看完这个问题ASP.NET MVC:将视图模型嵌套在彼此内部,反模式还是没有?
和德里克贝利的评论
我认为"考虑您的视图模型看起来像 XML 或 JSON"位可能是最重要的一点,在这里。我经常使用它 透视,帮助我了解视图模型应该是什么样子 喜欢,并帮助我了解哪些数据是"视图模型"数据与"数据" 这继续视图的 HTML 渲染"。有助于保持东西 清洁并将它们分开 – 德里克贝利 四月 11 '11 在 15:45
这让我想知道如何为具有数据绑定选择项的 ViewModel 创建视图。 我真的很挣扎,因为我无法想象SelectList
属于哪里。 如果我从JSON或XML的角度考虑,那么SelectList
是仅查看的一部分。 我想要的只是一个预填充了值列表的下拉列表,供用户选择Location
将其放在ViewModel中似乎是错误的,但是当我考虑将其移动到视图时,我不知道将要从数据库中提取的逻辑放置在哪里以填充选择列表
public class SearchViewModel
{
public int? page { get; set; }
public int? size { get; set; }
//Land Related search criteria
[IgnoreDataMember]
public SelectList LocationSelection{ get; set; }
更新
这是一个非常密切相关的好问题和答案C# mvc 3 使用视图中选定值的选择列表
我已经测试了这个实现,它做了我认为我想做的事情。 我不会急于选择一个答案,因为我还没有完全审查这个问题。
我会按照以下思路重构您的视图模型,因为我认为选择列表不应该属于视图模型:
public class SearchViewModel
{
public int? page { get; set; }
public int? size { get; set; }
//Land Related search criteria
public IEnumerable<Location> LocationSelection{ get; set; }
}
并在您的视图中,按如下方式填充视图模型:
public ActionResult Search()
{
var viewModel = new SearchViewModel()
{
viewModel.LocationSelection = _repository.All<Location>()
};
// any other logic here or in service class
return View(viewModel);
}
然后在您的视图中,您将使用 html.dropdownlist 帮助程序来显示您的项目。为我工作
我尽量避免使用SelectLists,因为它们似乎不适合MVC模型。 相反,我创建帮助程序以从模型中IEnumerable
类型生成 HTML 元素。 我认为这保留了将纯数据保留在模型中的一般规则,并在视图中保留显示逻辑。
但这只是我个人的看法。 我认为创建选择列表以明确在视图中显示数据是愚蠢的。