如何在MVC中呈现备用子视图?

时间:2009-12-22 18:22:51

标签: asp.net-mvc renderaction

我刚接触MVC,所以请不要认为我知道任何事情。

我正在选择一个已经用MVC编写的项目,我正在尝试添加一些东西。

在一个视图上有一行

<% Html.RenderAction("List", "Image", new { id = Model.JobId, all = true });  %>

我在Image目录下看到一个List.ascx。我在视图控制器上看到了List方法。

我想将该列表方法的结果呈现给不同的ascx文件。 (AssignImage.ascx)我意识到我可以在控制器上添加另一个方法,但似乎我应该有一种使用相同方法但不同视图的方法。

2 个答案:

答案 0 :(得分:2)

在你的Action方法

if (isList) return PartialView("List"); else return PartialView("AssignImage");

答案 1 :(得分:1)

如果你不介意重用(或复制)一些代码,我可能只是采取新行动来解决这个问题。

我认为我不会改变传递另一个参数的动作(动作已经是2:jobId和布尔值)。您可能必须在某处更改现有代码以考虑第三个参数。

假设动作只是给你一个记录列表我没看到如何用一行LINQ添加一个新动作(或者你得到数据)会冒犯DRY ......特别是如果它产生了代码通过在一个动作中不混合太多功能来更容易维护。如果它过于冒犯,那么你可以重构动作来调用一些常用的方法。