mvc 3中视图和控制器之间的通信

时间:2011-11-03 20:13:33

标签: asp.net-mvc-3

想象一下,我有一个带有1个链接(LinkBrands)的表单(Page1.cshtml)。我还有一个用于Page1(Page1Controller)的控制器和一个用于品牌(BrandController)的控制器。当用户点击链接时,最好做什么:

  1. LinkBrands - > Page1Controller - > BrandController(Page1Controller的操作将重定向到BrandController)
  2. OR

    1. LinkBrands - > BrandController
    2. 不确定哪条路线更好。有什么建议吗?

3 个答案:

答案 0 :(得分:0)

通常每个视图没有一个控制器。您将在同一个相关控制器上使用多个视图或部分视图的所有调用操作。我认为Brand是一个独立的实体,而不是Page1试图显示的其他东西,因此它应该可以直接使用BrandController但是因为实际上没有足够的信息继续你的例子关于page1的功能是什么我不能说你想要联系的是什么。

如果您需要从与品牌链接相关的品牌链接中捕获信息,那么请确保先将其收集到page1controller中,然后再重定向到品牌控制器以显示新视图。

答案 1 :(得分:0)

一切都取决于。

如果你必须在显示第二页之前执行Page1Controller中的任何逻辑(例如保存数据),那么你需要通过Page1Controller,然后转到BrandController:

LinkBrands-->Page1Controller-->BrandController 

如果您只需要重定向到第二页(您不需要任何来自Page1Controller的内容,您不需要它来执行任何操作,您可以在BrandController中为第二页创建模型)然后继续第二种选择:

LinkBrands-->BrandController

希望这有帮助。

答案 2 :(得分:0)

你的Page1Controller做了什么?看起来好像是在破坏模型 - 视图 - 控制器架构的目的,并尝试将其形式化为带有代码隐藏的WebForms方法。

所以,如果没有看到你的控制器到底做了什么,我会说你的第二个选择是最好的。