我有MVC 5项目,我有一堆视图,我已经在文件夹中的web.config中设置它们,让它们都从一个继承自WebViewPage的自定义类继承,以便我可以添加在所有视图都可以使用的属性/方法中。
public abstract class SCView<T> : WebViewPage<T>
{
}
我碰巧有一点演示逻辑(是的,我知道,不好 - 但我必须这样做,原因很多)。逻辑很简单,如下:
if([condition])
{
Html.RenderAction("DoThis", "Page", new { Area = "Common", model = Model, viewname = "TitlePanel" });
}
else if([another condition])
{
Html.Partial("/Areas/Common/Views/Media/TitlePanelEdit.cshtml", Model) *@
}
基本上,如果满足第一个条件,我需要显示某个控制器动作 - 否则,渲染一个不同的局部视图。
我不想在每个视图中都这样做 - 所以我希望以某种方式将这个逻辑合并到CustomView类中。但是,我发现Html辅助方法不能直接在这个类中使用 - 如果我在控制器内,这显然会更容易。无论如何我可以把这个逻辑集中起来吗?
答案 0 :(得分:0)
也许我在你的问题中遗漏了一些东西,但是,在我看来,你只需要标准化你的电话。
选择
@Html.Action
@Html.Partial
或者
@Html.RenderAction
@Html.RenderPartial
而不是混合类型,那么你的viewbase逻辑将能够返回相同的类型,在渲染的情况下为void ...作为输出到流的那些,或者如果你使用非渲染版本则为mvchtmlstring