4

我觉得我的问题与这个问题很接近,但我想更一般地讨论这样的代码应该放在哪里。Asp.Net MVC SelectList 重构问题?

我目前直接在我的实体模型上创建我的选择列表,就像这样。

public SelectList taskDeadlineTime
    {
        get { return new SelectList(TimeDictionary, "Value", "Key", this.getDeadlineTime()); }
    }

这感觉有点不对劲,就好像我在我的模型中执行视图工作一样。

然而,这确实意味着我可以获得该属性,并且我的选择列表就在那里。

现在,我应该把这个逻辑放在我的控制器中(要编写更多代码)还是视图(感觉不对,而且很乱),或者只是以不同的方式来做。

我现在看这个的原因是因为我正在比较同一对象实体的两个副本,并且将选择列表作为 getter 的一部分直接意味着它不起作用。我知道我可以修改这个比较来处理这个问题,但是在模型中做一些可视化的东西感觉不对(除非选择列表的准备是模型中正确的东西)

4

2 回答 2

7

我通常把它放到视图中。

视图模型:

public IEnumerable<Foo> TaskDeadlineTimes { get; set; }

看法:

<%= Html.DropDownListFor(
    x => x.SelectedValue, 
    new SelectList(Model.TaskDeadlineTimes, "Value", "Key")
) %>

控制器负责使用存储库设置此属性值。

于 2010-09-19T17:51:15.253 回答
0

我们还有一个称为 Builders 的层。

控制器创建构建器并将必要的信息传递给它。

Builder 与上下文(当前用户、他的角色等)+ 数据层交互,并使用所有有效数据生成模型。

控制器将此模型传递给 View。

于 2010-09-19T18:03:30.897 回答