c# - 我在正确的轨道上吗(ASPX、ascx、设计)

标签 c# asp.net ascx

我有几个网页,每个网页都或多或少相同。他们每个人的顶部都有一个员工部分。下一部分是客户部分,之后的部分是以前的订单。这两个并不是所有页面上都必须的。最后一部分是评论(博客)。

我从 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 提供的用于开发用户控件的链接或引用以下内容:

Create ASP.NET user control

My User Control

关于c# - 我在正确的轨道上吗(ASPX、ascx、设计),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6677202/

相关文章:

c# - 如何使用 C# 访问 ListBox 中的 TextBlock

c# - AngularJS,MVVM和只读字段

c# - 动态创建的单选按钮不会在单击时执行事件

c# - 运行 Javascript 来调整 ASP.NET 控件的大小,一旦它被回传呈现或更新

asp.net - 用户控件不读取资源文件...在 WebForms .NET 上正确组织资源文件?

C# ASP.NET 自定义控件未显示

c# - log4net 方法 GetLogger() 在 Serilog 中等效

c# - 从 SQLite 数据库填充 DataGridView (C#)

c# - Web 服务器上的 WAV/MP3 转换

c# - 部署 ascx 控件