我是否在正确的轨道上(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>

(任何错别字仅供您选择;),实际代码中没有错别字)

我是否在正确的轨道上(ASPX, ascx,设计)

为您的项目使用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:TemlpateTestMessageTemplate元素中的