假设我拥有该控制器的ColorsController
和Colors/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()方法?我会说,这种“解析”逻辑似乎不适合该模型。另一方面,我冒险说这个观点也不是正确的地方。怎么做?
由于
答案 0 :(得分:1)
你认为视图不是放置解析逻辑的正确位置。但是,我并不认为执行解析也应该在模型中完成,因为模型实际上是用于数据和持久性,所以如果你不打算保存用户的颜色串,那么就不需要了在那里。
离开控制器,这应该是它应该的位置。我只想创建一个数组并将其添加到ViewData
集合中;您可以在视图中完成所有演示。
答案 1 :(得分:1)
控制器似乎是可以接受的,但如果您打算大规模使用它,请考虑制作自定义活页夹。将解析的值传递给视图应该使用模型完成。您也可以使用ViewBag或ViewData,但使用它会降低代码维护性。