У меня есть несколько веб-страниц, каждая из которых более или менее одинакова. У каждого из них есть раздел для сотрудников наверху. Следующий раздел - это раздел клиента, а раздел после - предыдущие заказы. Эти два не являются строго необходимыми на всех страницах. Последний раздел - комментарии (ведение блога).
Я начал с 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>
(Любые опечатки только для вашего удовольствия;), в реальном коде опечаток нет)