类似的母版页,最好的干燥方式?

时间:2011-06-20 19:31:22

标签: c# asp.net master-pages

我有两个相似的母版页,基本上它们非常广泛,但区别在于使用

common content

<form id="form1" runat="server" enctype="multipart/form-data">
    common content
</form>

common content

另一个是

common content

<dn:Form id="form1" runat="server">
    common content
</dn:Form>

common content

我想知道如何实现这一目标,而无需创建两个母版页,只需更改表单标签......

我目前的做法是,基本上有一个主页面包含其他内容,第二个包含内部内容,另外两个包含表单标签和占位符,然后动态选择另一个主页面。

有更好的方法可以做到这一点还是这是正确的方法?感谢。

更新:我不确定我当前的想法是否得到充分表达:

Base.master将拥有外部内容,没有继承。

Regular和Modified.master只有不同的表单标签,都继承自Base.Master

Shared.master将拥有内部内容,继承自Regular.Master,如果它需要其他表单控件,则它会选择另一个master(对ContentPlaceHolderID具有相同的FormContent) ,动态地使用类似的东西,也许从web.config或类似的东西中读取

    protected void Page_PreInit(object sender, EventArgs e)
    {
        this.MasterPageFile = "~/App_Shared/RegularWebForm.Master";
        this.MasterPageFile = "~/App_Shared/UrlRewritableWebForm.Master";
    }

目标是能够在同一个网域的三个不同应用程序中使用相同的母版页。

我的解决方案提出的想法是我在给定的“App_Shared”文件夹中有这四个母版页文件,它通过所有项目的svn:externals引用,所以我不必重复代码。我的想法是我选择Shared.Master(它将是所有三个应用程序的功能基本主页文件)是否使用当前应用程序中的常规表单或用户控件,并且可以通过应用程序的web.config。

1 个答案:

答案 0 :(得分:0)

在后面的母版页代码中,您应该能够覆盖OnInit(或OnLoad或其他任何位置)并确定何时需要多部分加密,并在何时进行,请致电:

Attributes.Add("enctype", "multipart/form-data");

更好:

公开布尔属性:

public bool EncodeMe {get;set;};

在每个使用主控制集的表单中

Master.EncodeMe = true; // or false of course

然后在母版页中使用bool来确定是否要编码。