在asp.net mvc中放置url解析逻辑的位置?

时间:2011-02-14 00:19:15

标签: c# asp.net-mvc asp.net-mvc-3

假设我拥有该控制器的ColorsControllerColors/Index.cshtml视图。 我想让用户能够输入表格的网址

Colors/Index/<coma separated list of colors>

然后以相同的颜色为用户传入的每种颜色打印字符串“abc”。 URL的示例是

Colors/Index/red,white,green,yellow

现在,我已经通过以下方式定义了路由:

    routes.MapRoute(
        "Default",
        "{controller}/{action}/{color}",
        new { controller = "Colors", action = "Index", color = "black" }

这是控制器的代码:

public ActionResult Index(string colorsParams) {
    string[] colors = colorsParams.Split(',');
    return View(); //currently does not use colors
}

我现在的问题是如何从这里开始。我应该将colorsParams直接传递给视图并让它解析信息吗?我应该在模型中做那种逻辑吗?就在这里的Index()方法?我会说,这种“解析”逻辑似乎不适合该模型。另一方面,我冒险说这个观点也不是正确的地方。怎么做?

由于

2 个答案:

答案 0 :(得分:1)

你认为视图不是放置解析逻辑的正确位置。但是,我并不认为执行解析也应该在模型中完成,因为模型实际上是用于数据和持久性,所以如果你不打算保存用户的颜色串,那么就不需要了在那里。

离开控制器,这应该是它应该的位置。我只想创建一个数组并将其添加到ViewData集合中;您可以在视图中完成所有演示。

答案 1 :(得分:1)

控制器似乎是可以接受的,但如果您打算大规模使用它,请考虑制作自定义活页夹。将解析的值传递给视图应该使用模型完成。您也可以使用ViewBag或ViewData,但使用它会降低代码维护性。