使用路径数据作为模型过滤器?

时间:2011-01-27 17:00:06

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

也许我看错了。
我有一个包含3个“分类”列的大表。这些分类名称是MVC的理想控制器/动作名称 的 BUT
所有控制器/操作名称都会向下过滤到表中的某些行,它不会创建要在视图中显示的唯一模型。有没有更好的方式来看待这个?

ID | CAT1 | CAT2 | CAT3 | DETAILS |
1  |  a1  |  b1  |  c1  |  foo    |
...
x  |  a2  |  b2  |  c2  |  bar    |
...
n  |  a3  |  b3  |  c3  |  fun    |
...

/ a1 / b2 / c3 /的路由将导致与/ a3 / b3 / c1的路由相同的“数据对象”。我对MVC的(有限)理解在这里没有意义,因为不同的路径应该使用不同的模型 如何让所有这些操作都使用相同的视图?

代码就像

/drills/hydraulic/   --> WHERE(CAT1="a2" AND CAT2="b3")
/loaders/tracked/    --> WHERE(CAT1="x3" AND CAT2="r3")
/hauling/rails/      --> WHERE(CAT1="c8" AND CAT3="b7")

因此,所有3个URL都将使用相同的View,但它们是不同的控制器/操作。 看起来我没有正确地使用这个模式,因为我有很多控制器,但几乎没有任何视图。

1 个答案:

答案 0 :(得分:0)

听起来你需要在路由中添加一个控制器 - 就像ClassificationController一样。它有一个方法:

public ActionResult Index(string cat1, string cat2, string cat3)
    {
        //...load from table and return data to the view
    }

然后您的路由将如下所示:

routes.MapRoute("ClassificationIndex", "classification/{cat1}/{cat2}/{cat3}", new { controller = "classification", action = "index" });

...你的路线看起来像这样:

/分类/ CAT1 / CAT2 / CAT3

现在你有一个View(Index.aspx)由一个Controller(ClassificationController)处理。

这是你需要的吗?