我有几个网页,每个网页都或多或少相同。他们每个人的顶部都有一个员工部分。下一部分是客户部分,之后的部分是以前的订单。这两个并不是所有页面上都必须的。最后一部分是评论(博客)。
我从 2 页开始,没问题。我为每个页面编写了相同的(复制粘贴)代码(提供或获取一些细节)。销售人员将此(诱饵)给了客户,客户饿了..更多更多更多...现在我有 10 个页面或多或少具有相同的代码。
现在我在考虑是否可以通过重复使用相同的“控件”来减少开发时间。所以开始做一些 ascx (4),认为我可以在每个页面(员工、客户、销售、博客)中重用这 4 个控件。
我遇到了一些问题,谷歌告诉我 - “不不不,那不是你使用 ascx 的方式”。 ascx 只是一个新的“asp:label
”/“asp:textbox
”,可能还有一些额外的逻辑。
Snatch being - 我制作了一个 NewTest.aspx,其中包含 4 个控件,但我没有看到 asp:formview
/asp:detailsview
从控件等。我可以在 formview 周围放置“hello worlds”,就在之前,就在之后 - 但不在 <formview></formview>
内.
我哪里出错了,我需要重新考虑什么?
NewTest.aspx
<table width="800">
<tr>
<td>
<IIT:EmployeeRecord ID="test1" runat="server" />
</td>
</tr>
</table>
我使用 ObjectDataSource 并从 Session 中提取员工 ID。员工记录 - 他的名字,一个带有他的邮政编码的下拉列表(仅限销售代表)和一个搜索字段。基本上是一个带有一些额外逻辑的文本框。
所有底层逻辑(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,但不能识别 Comments 和 CustomerRecord。 编辑:Intellisense 现在可以识别它们。
员工记录
<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>
(任何错别字仅供您欣赏;),真正的代码中没有错别字)
最佳答案
为您的项目使用 MasterPage。如果您认为某些公共(public)特定页面组的信息与其他组无关,则为这些特定页面组使用嵌套母版页。
使用嵌套母版页将使您的根母版页保持轻便,并且也适用于其他页面。
您还可以点击@Umar 提供的用于开发用户控件的链接或引用以下内容:
关于c# - 我在正确的轨道上吗(ASPX、ascx、设计),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6677202/