Я на правильном пути (ASPX, ascx, дизайн) - PullRequest
4 голосов
/ 13 июля 2011

У меня есть несколько веб-страниц, каждая из которых более или менее одинакова. У каждого из них есть раздел для сотрудников наверху. Следующий раздел - это раздел клиента, а раздел после - предыдущие заказы. Эти два не являются строго необходимыми на всех страницах. Последний раздел - комментарии (ведение блога).

Я начал с 2 страниц, без проблем. Я написал один и тот же (копировать-вставить) код для каждой страницы (дать или взять пару деталей). Продажи дали (приманку) это клиенту, и клиент проголодался ... больше больше БОЛЬШЕ ... Теперь у меня есть 10 страниц с более или менее одинаковым кодом.

Теперь я подумал, можно ли сократить время разработки, используя те же «элементы управления». Так что начал делать некоторые ascx (4), думая, что я мог бы повторно использовать эти 4 элемента управления на каждой странице (сотрудник, клиент, продажи, блог).

Я сталкиваюсь с небольшим уловком, и Google говорит мне - "нет, нет, это не то, как вы используете ascx". Ascx - это просто новый "asp:label" / "asp:textbox" с, возможно, немного дополнительной логикой.

Схватка - я создал NewTest.aspx с каждым из 4-х элементов управления, но я не вижу asp:formview / asp:detailsview и т. Д. Из элементов управления. Я могу поместить "привет миры" вокруг формы, прямо перед, сразу после - но не внутри <formview></formview>.

Где я иду не так, что мне нужно пересмотреть?

NewTest.aspx

    <table width="800">
        <tr>
            <td>
                <IIT:EmployeeRecord ID="test1" runat="server" />
            </td>
        </tr>
     </table>

Я использую ObjectDataSource и извлекаю идентификатор сотрудника из сеанса. Запись сотрудника - его имя, выпадающий список с почтовыми индексами (только для salesrep) и поле поиска. В основном текстовые поля с небольшой дополнительной логикой.

Вся базовая логика (BLL, DAL, Модели и т. Д.) Абсолютно одинакова. Остальная часть проекта компилируется и запускается точно так же, как и прежде, чем я начал с ascx.

Редактировать: Я очень стараюсь, чтобы KSS это, если я могу показать EmployeeRecord, то я могу скопировать и вставить эту идею.

Запустить в webconfig:

<pages>
<controls>
    <add tagPrefix="IIT" tagName="Comments" src="~/DynamicData/FieldTemplates/Comments.ascx" />
    <add tagPrefix="IIT" tagName="OrderRecord" src="~/DynamicData/FieldTemplates/OrderRecord.ascx" />
    <add tagPrefix="IIT" tagName="CustomerRecord" src="~/DynamicData/FieldTemplates/CustomerRecord.ascx" />
    <add tagPrefix="IIT" tagName="EmployeeRecord" src="~/DynamicData/FieldTemplates/EmployeeRecord.ascx" />
  </controls>
</pages>

Intellisense может распознавать EmployeeRecord и OrderRecord, но не Комментарии и CustomerRecord. Редактировать: теперь Intellisense распознает их все.

EmployeeRecord

<asp:formview ID="fv_empDetail" runat="server" datasourceID="ods_empDetail">
<itemtemplate>
<table>
    <tr>
        <td>
        Medarbejder:
        </td>
    <td>
<asp:TextBox ID="tbEmployeeName" runat="server" ReadOnly="true" Text='<%# Bind("name") %>' BorderStyle="None"></asp:TextBox>
</td></tr>
</table>
</ItemTemplate>
</asp:FormView>
    <asp:ObjectDataSource ID="ods_empDetail" runat="server" SelectMethod="GetEmployee"
     TypeName="xxxxxx.EmployeeBLL">
     <SelectParameters>
         <asp:SessionParameter Name="employee" DbType="String" SessionField="employee" />
     </SelectParameters>
 </asp:ObjectDataSource>

(Любые опечатки только для вашего удовольствия;), в реальном коде опечаток нет)

Ответы [ 3 ]

2 голосов
/ 13 июля 2011

Используйте MasterPage для вашего проекта.Если вы считаете, что есть информация для некоторой общей определенной группы страниц, не относящейся к другим группам, то используйте вложенную главную страницу для этих определенных групп страниц.

Использование вложенных главных страниц сохранит вашу корневую главную страницу светлой итакже для других страниц.

Вы также можете перейти по ссылке для разработки пользовательского элемента управления, заданной @Umar, или обратиться к следующему:

Создать пользовательский элемент управления ASP.NET

Мой пользовательский элемент управления

0 голосов
/ 13 июля 2011

Если я правильно понял вашу проблему, вы пытаетесь поместить веб-элементы управления (пользовательские или иные) в свои собственные элементы управления.

Я думаю, что вы пытаетесь создать шаблонные элементы управления ASP.NET. Прочтите статью Как: создать шаблонные элементы управления ASP.NET .

Это позволит вам написать что-то вроде следующего в ваших файлах ASPX / ASCX.

<uc:TemplateTest runat="server">
  <MessageTemplate>
    <asp:Label runat="server" ID="Label1" Text='Foo!!' />
    <br />
    <asp:Label runat="server" ID="Label2" Text='Bar!!' />
    <hr />
  </MessageTemplate>
</uc:TemplateTest>

Примечание: этот пример был адаптирован из статьи, указанной выше.

Обратите внимание, как два тега asp:Label существуют внутри MessageTemplate элемента uc:TemlpateTest.

0 голосов
/ 13 июля 2011

Почему бы не создать главную страницу, содержащую всю информацию, общую для всех страниц, а затем только заполнить информацию, относящуюся к конкретной странице?

...