从类继承WebViewPage <t>调用RenderAction和Partial

时间:2015-07-27 20:44:59

标签: c# asp.net asp.net-mvc asp.net-mvc-5 render

我有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辅助方法不能直接在这个类中使用 - 如果我在控制器内,这显然会更容易。无论如何我可以把这个逻辑集中起来吗?

1 个答案:

答案 0 :(得分:0)

也许我在你的问题中遗漏了一些东西,但是,在我看来,你只需要标准化你的电话。

选择

    @Html.Action
    @Html.Partial

或者

    @Html.RenderAction
    @Html.RenderPartial

而不是混合类型,那么你的viewbase逻辑将能够返回相同的类型,在渲染的情况下为void ...作为输出到流的那些,或者如果你使用非渲染版本则为mvchtmlstring