我在从用户控件组成的发布页面传递表单数据方面遇到了麻烦。
我之前发布过这个问题,Getting form field names on Submit when form is user control,但答案并没有解决我的问题,或者我误解了它们。
让我试着更清楚地解释一下我在做什么。
我有一个向用户显示表单的页面。表格由几个部分组成,但为简单起见,我们会说有两部分。这些部分中的每一部分都是用户控件,因此newSale.aspx的实际标记只是:
<%@ Page Language="VB" MasterPageFile="~/MasterPage.master" CodeFile="newSale.aspx.vb" Inherits="newSale_Default"%>
<%@ Register TagPrefix="controls" TagName="customerForm" Src="~/Controls/customerForm.ascx" %>
<%@ Register TagPrefix="controls" TagName="itemList" Src="~/Controls/itemList.ascx" %>
<asp:content id="content1" ContentPlaceHolderID="mainContent" runat="server">
<div class="content">
<form id="newSale" method="post" action="saveSale.aspx">
<h1>--- New Sale ---</h1>
<div class="section" id="customerSection">
<controls:customerForm ID='customerForm1' showBankDetails="false" runat='server' />
</div>
<div class="section" id="saleSection">
<controls:itemList ID='itemList1' showShipping="false" showDeposit="false" runat='server' />
<div class="row submitRow">
<div id="submitSale">Submit</div>
</div>
</div>
</form>
</div>
</asp:content>
所以你看到我的两个主要Controls
标签分别带有ID“customerForm1”和“itemList1”。
提交按钮是故意点击的div,提交由jQuery完成,因此:
$('#submitSale').live('click', function () { $('#newSale').submit(); });
当用户控件呈现在浏览器中时,ASP.NET的元素的ID和名称(我理解其原因)是混乱的,所以以一个字段为例:
customerForm控件中包含的名为“name”的字段变为m$mainContent$customerForm1$name
我希望根据上面声明的Form标记的action属性将此表单提交到单独的文件(saveSale.aspx)。
在saveSale.aspx的Code-Behind中,我需要将从表单传递的数据保存到dataBase中,并将其作为HTML页面返回到aspx文件中。
如何在saveSale.aspx(.vb)中可靠地获取提交的表单字段的值?
<%= request.form("m$mainContent$customerForm1$name") %>
有效,但使用起来很自然,特别是当我想将其复制到其他目的时。
m.mainContent.customerForm1.name.selectedValue()
告诉我'm'未被宣布
从其他对我上一个问题的回复中,我尝试在(saveSale.aspx)页面的顶部注册控件,并使用
显式地将Control发布到页面中<controls:customerForm ID='customerForm1' showBankDetails="false" runat='server' />
哪个不起作用,但即使这样也没用,因为我不想再使用Control了,我只是想从中获取数据。
如果我在这里愚蠢,我会道歉,但我尝试了很多不同的代码和谷歌搜索的想法,但我似乎无法在上面的Request.Form示例之外以任何可扩展的方式工作。
我使用的是.NET 2.0,因此无法使用我在.NET 4.0中提到过的静态客户端功能
另外,请使用VB.NET,如果可以提供帮助,请帮助VB示例。
非常感谢。