2011-02-14 67 views
0

比方說,我有一個ColorsController和一個Colors/Index.cshtml查看該控制器。 我想使用戶能夠輸入形式在asp.net mvc中把url解析邏輯放在哪裏?

Colors/Index/<coma separated list of colors> 

的URL,然後讓字符串「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()方法?我想說,這種「解析」邏輯似乎不適合模型。另一方面,我會冒險說這個觀點也不是正確的地方。這個怎麼做?

感謝

回答

1

控制器似乎是可以接受的,但如果您打算大規模使用它,請考慮製作自定義綁定器。傳遞分析值來查看應該使用模型來完成。您也可以使用ViewBag或ViewData,但使用它會降低代碼維護性。

+0

你能不能解釋一下如何在模型中做到這一點?我也相信通過ViewData/ViewBag將數據傳遞給視圖看起來有點笨拙(儘管在這樣一個小問題中這不是一個大問題)。 – 2011-02-14 00:57:03

1

你是正確的觀點是不要把你的分析邏輯正確的地方。但是,我並不認爲執行解析應該在模型中完成,因爲模型實際上是用於數據和持久性的,所以如果不打算保存用戶的顏色串,那麼不需要它到那裏。

這留下了控制器,這可能是它應該在的地方。我只需創建一個數組並將其添加到ViewData集合中;您可以在視圖中完成所有演示。