我是否在正确的轨道上(ASPX, ascx,设计)
本文关键字:ASPX ascx 设计 轨道 是否 | 更新日期: 2023-09-27 18:02:10
我有几个网页,每个网页都差不多。它们的顶部都有一个员工区。下一节是客户节,后一节是以前的订单。这两个在所有页面上都不是严格必要的。最后一部分是评论(博客)。
我开始用2页,没有问题。我为每个页面都编写了相同的(复制-粘贴)代码(保留一些细节)。销售人员把这个给了顾客,顾客饿了。更多更多更多…现在我有10个页面或多或少都有相同的代码。
现在我在想我是否可以通过重用相同的"控件"来减少开发时间。所以我开始做一些ascx(4),认为我可以在每个页面(员工,客户,销售,博客)上重用这4个控件。
我遇到了一个小问题,谷歌告诉我-"不,不,不,这不是你如何使用ascx"。ascx仅仅是一个新的"asp:label
"/"asp:textbox
",可能在
我做了一个NewTest。aspx与4个控件中的每一个,但我没有看到asp:formview
/asp:detailsview
等控件。我可以把"hello worlds"在formview周围,就在前面,就在后面-但不是在<formview></formview>
里面。
我哪里错了,我需要重新考虑什么?
NewTest.aspx
<table width="800">
<tr>
<td>
<IIT:EmployeeRecord ID="test1" runat="server" />
</td>
</tr>
</table>
我使用ObjectDataSource并从Session中提取员工ID。雇员记录—他的姓名、带邮政编码的下拉列表(仅限销售代表)和搜索字段。基本上就是一个文本框,加上一点额外的逻辑。
所有底层逻辑(bll、DALs、model等)都是完全相同的。项目的其余部分的编译和运行与我开始使用ascx之前完全相同。
编辑:我正在努力KSS这个,如果我能得到EmployeeRecord显示,那么我可以复制粘贴这个想法。
Start in 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>
智能感知可以识别EmployeeRecord和OrderRecord,但不能识别Comments和CustomerRecord。编辑:智能感知现在可以识别它们了
将采用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>
(任何错别字仅供您选择;),实际代码中没有错别字)
为您的项目使用MasterPage。如果您认为存在一些通用的特定页面组的信息,而不考虑其他组,那么为这些特定的页面组使用嵌套的母版页。
使用嵌套的母版页将保持你的根母版页轻,并将服务于其他页面。
您也可以按照@Umar给出的开发用户控件的链接或参考以下内容:
创建ASP。. NET用户控件
My User Control
为什么不创建一个包含所有页面共有信息的母版页,然后只填写特定于页面的信息呢?
如果我正确理解了您的问题,您要做的是将Web控件(自定义或其他)放置在您自己的自定义控件中。
我认为你要做的是创建模板ASP。网络控制。请参阅文章如何:创建模板化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
标签是如何存在于uc:TemlpateTest
的MessageTemplate
元素中的