代码之家  ›  专栏  ›  技术社区  ›  Chris Barry

selectlist逻辑应该放在哪里ASP.NETMVC、视图、模型还是控制器?

  •  4
  • Chris Barry  · 技术社区  · 15 年前

    Asp.Net MVC SelectList Refactoring Question?

    我现在直接在实体模型上创建selectlist,就像这样。

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

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

    然而,这意味着我可以只得到属性,我的selectlist就在那里。

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

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

    2 回复  |  直到 9 年前
        1
  •  7
  •   Darin Dimitrov    15 年前

    我通常把这个放在视野里。

    视图模型:

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

    查看:

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

        2
  •  0
  •   st78    15 年前

    我们有一个附加层,我们称之为建设者。

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

    而不是将此模型传递给视图。

    推荐文章