Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要为.NET中的多部分表单进行良好的设计_.net_Design Patterns - Fatal编程技术网

需要为.NET中的多部分表单进行良好的设计

需要为.NET中的多部分表单进行良好的设计,.net,design-patterns,.net,Design Patterns,我在C#/ASP中有一组屏幕,用户在其中输入信息。它被分为多个部分,以使其更加用户友好。它过去是在单独的页面中,但这很难管理,因为所有的信息都非常相关。因此,它被更改为一个页面中的面板,我们根据用户的进度显示和隐藏这些面板 我们希望能够很容易地移动物体。目前,我们必须做大量的复制粘贴,这不是特别快,而且容易出错。有没有更好的方法来处理多部分表单,使它们更模块化 (作为背景,我主要是一名Java开发人员,最近一直在使用.NET)一个.ascx文件,也称为UserControl是在整个项目中重用常见

我在C#/ASP中有一组屏幕,用户在其中输入信息。它被分为多个部分,以使其更加用户友好。它过去是在单独的页面中,但这很难管理,因为所有的信息都非常相关。因此,它被更改为一个页面中的面板,我们根据用户的进度显示和隐藏这些面板

我们希望能够很容易地移动物体。目前,我们必须做大量的复制粘贴,这不是特别快,而且容易出错。有没有更好的方法来处理多部分表单,使它们更模块化


(作为背景,我主要是一名Java开发人员,最近一直在使用.NET)

一个
.ascx
文件,也称为
UserControl
是在整个项目中重用常见html/代码的好方法。它们本质上只是其他.NET控件的容器

让我们假设你有一个非常简单的表单,你只是询问一个人的姓名和年龄,出于某种原因,你想在一页或几页中多次使用这个表单

UserControl1.ascx 标记:

    <asp:Label runat="server" id="lblName" Text="What is the person's name?" AssociatedControlID="txtName"></asp:Label>
    <asp:TextBox runat="server" id="txtName"></asp:TextBox>
    <asp:Label runat="server" id="lblAge" Text="What is the person's age?" AssociatedControlID="txtAge"></asp:Label>
    <asp:TextBox runat="server" id="txtAge"></asp:TextBox>

<asp:Button runat="server" id="btnSubmit" Text="Submit" Onclick="btnSubmit_Click"></asp:Button>
<%@ Register src="UserControl1.ascx" tagname="UserControl1" tagprefix="uc1" %>
<html>
...blah blah...
<p>Tell us about you</p>
<uc1:UserControl1 ID="ucYou" runat="server" />
<p>Tell us about your friend</p>
<uc1:UserControl1 ID="ucYourFriend" runat="server" />
.. blah blah
</html>
然后在其他页面上,您只需将此用户控件放入,就可以像这样引用它:

Default.aspx 标记:

    <asp:Label runat="server" id="lblName" Text="What is the person's name?" AssociatedControlID="txtName"></asp:Label>
    <asp:TextBox runat="server" id="txtName"></asp:TextBox>
    <asp:Label runat="server" id="lblAge" Text="What is the person's age?" AssociatedControlID="txtAge"></asp:Label>
    <asp:TextBox runat="server" id="txtAge"></asp:TextBox>

<asp:Button runat="server" id="btnSubmit" Text="Submit" Onclick="btnSubmit_Click"></asp:Button>
<%@ Register src="UserControl1.ascx" tagname="UserControl1" tagprefix="uc1" %>
<html>
...blah blah...
<p>Tell us about you</p>
<uc1:UserControl1 ID="ucYou" runat="server" />
<p>Tell us about your friend</p>
<uc1:UserControl1 ID="ucYourFriend" runat="server" />
.. blah blah
</html>
页面指令
正如Robert在评论中提醒我的那样,您需要确保使用UserControl的页面顶部有正确的page指令。如果您在设计视图中,只需将UserControl拖到页面上,VisualStudio将为您处理此问题。否则,您需要自己包含它。

您可能需要签出向导控件——它的设计正好可以处理这种情况

一定要注册标记前缀uc1。@罗伯特:忘了!现在添加。