MVC导航选项卡

时间:2009-04-02 13:36:52

标签: asp.net-mvc

好的,我现在想知道如何使用ASP.NET MVC处理导航标签。举一个例子,假设你有像stackoverflow这样的标签。所以,问题,标签,用户等

现在假设你在这个主要的一个下面有一个“子标签”。因此,一旦选择了主要的“问题”选项卡,就会显示“查看”和“添加”选项卡。一些问题:

  • 最好为这两个实例设置一组路由,例如http://site/questions/viewhttp://site/questions/add吗?

  • 您是否因此拥有一个NavigationController,其中包含每个主要标签的操作,即问题,标签等,然后是子标签的ID值,即查看和添加。这将为您提供以下内容:

公共ActionResult问题(字符串视图)

公共ActionResult标签(字符串视图)

  • 或者您是否每个标签/导航项都有一个控制器?如果有,那将如何实施?

  • 假设您需要通过突出显示选项来显示所选标签。在导航选项卡的视图中(我猜你会有一个部分视图),这会直接引用URL来确定哪些应该突出显示,或者这是最好的其他方式?

提前感谢任何指针

2 个答案:

答案 0 :(得分:2)

你最好的选择是坚持REST。我坚持每个主选项卡都有一个控制器,每个子选项卡对应于可能的REST操作:index,new。编辑和删除是特定于项目的,因此不会获得选项卡。 Create由new调用并通过edit进行更新。

您示例中的例外情况是“提问”标签。它与“问题”选项卡(索引)处于同一级别,但会调用“问题/新问题”。

答案 1 :(得分:1)

我认为您的控制器应该比您的用户界面更紧密地绑定到您的模型(请参阅我对this question的回答)。一般来说,我认为您应该考虑控制器处理模型的输入,即对我的模型执行某些操作,然后返回与该操作对应的视图(UI)。 UI的元素可以(但不一定必须)反映模型层次结构。例如,SO中的QuestionsUnansweredAsk a Question似乎都与问题模型相关,但它们都是顶级界面元素。 Unanswered似乎也拥有它自己的控制器,但很容易被视为...... /问题/未答复,而不是...... /未答复。