我有几个网页,每个网页都或多或少相同。他们每个人都有一个顶部的员工部分。下一部分是客户部分,之后的部分是先前的订单。这两个并非在所有页面上都是必需的。最后一部分是评论(博客)。
我从2页开始,没问题。我为每个页面编写了相同的(复制粘贴)代码(给出或采取一些细节)。销售给顾客带来了(诱饵),顾客感到饥饿..更多更多...现在我有10页,或多或少相同的代码。
现在我想我可以通过重复使用相同的“控件”来减少开发时间。所以开始做一些ascx(4),认为我可以在每个页面(员工,客户,销售,博客)重用这4个控件。
我遇到了一个小抓举,谷歌告诉我 - “不,不,不,你不是如何使用ascx”。 ascx只是一个新的“asp:label
”/“asp:textbox
”,可能还有一些额外的逻辑。
抢夺 - 我用4个控件中的每个控件创建了一个NewTest.aspx,但是我没有从控件中看到asp:formview
/ asp:detailsview
等。我可以在形式视图中放置“hello worlds”,就在之前,之后 - 但不在<formview></formview>
内。
我哪里出错了,我需要重新考虑什么?
NewTest.aspx
<table width="800">
<tr>
<td>
<IIT:EmployeeRecord ID="test1" runat="server" />
</td>
</tr>
</table>
我使用ObjectDataSource并从Session中提取员工ID。员工记录 - 他的名字,带有他的zipcodes的下拉列表(仅限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,但不能识别Comment和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>
(任何拼写错误仅供您使用;),实际代码中没有拼写错误
答案 0 :(得分:2)
将MasterPage用于您的项目。如果您认为某些常见特定页面组的信息与其他组无关,那么请对这些特定页面组使用嵌套母版页。
使用嵌套的主页将使您的根母版页保持清晰,并且也将用于其他页面。
您也可以按照@Umar给出的开发用户控制的链接进行操作,或者参考以下内容:
答案 1 :(得分:0)
为什么不创建一个母版页,其中包含所有页面共有的所有信息,然后只填写特定于页面的信息?
答案 2 :(得分:0)
如果我已正确理解您的问题,您要做的是将Web控件(自定义或其他)放在您自己的自定义控件中。
我认为你要做的是创建模板化的ASP.NET控件。请参阅文章How to: Create Templated ASP.NET User Controls。
这将使您能够在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
的{{1}}元素中有两个MessageTemplate
标记。