Подобные мастер-страницы, лучший способ СУХОЙ? - PullRequest
4 голосов
/ 20 июня 2011

У меня есть две похожие главные страницы, в основном они довольно обширные, но разница заключается в том, что одна использует

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 будет иметь внешнее содержимое, без наследования.

Обычный и модифицированный.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 fromвсе проекты, поэтому мне не нужно повторять код.Идея заключается в том, чтобы я выбрал, использует ли Shared.Master (который будет файлом главной страницы функциональной базы для всех трех приложений) обычную форму или пользовательский элемент управления в текущем приложении, и этот выбор может быть сделан с помощью параметра вweb.config для приложения.

1 Ответ

0 голосов
/ 20 июня 2011

В коде главной страницы вы должны иметь возможность переопределить OnInit (или OnLoad или в любом другом месте) и определить, когда вам нужно многочастное шифрование, и когда вы это делаете, позвоните:

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

Еще лучше:

Предоставить логическое свойство:

public bool EncodeMe {get;set;};

В каждой форме, которая использует набор основных элементов управления

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

, затем на главной странице используйтеbool, чтобы определить, следует ли кодировать.

...