我是这个世界的新手。
如图所示。这是我的 Default.aspx 页面,其中我实现了一个名为" adress.ascx "
的Web用户控件(uc)。我的uc控件分为两类,第一类是 Asp.net 控件类别,第二类是 Html 控件类别。
场景是什么:我想将复制到Asp:TextBox。
我有2个选项,要么我可以使用 asp:按钮或使用html按钮(没有runat ="服务器" )
这是我的代码
<h1>ASP.NET Controls</h1>
<br />
<asp:Label runat="server" Text="Street"></asp:Label>
<asp:TextBox runat="server" ID="tbStreet" Text=""></asp:TextBox><br /><br />
<asp:Button ID="btnAsp" Text="Button ASP" runat="server"
OnClick="btnAsp_Click"
/>
<h2>-------------------------------</h2>
<h1>Html Controls</h1>
Street
<input type="text" name="Street" id="street"><br />
<br />
<button type="button" id="btnStreet">Button HTML!</button>
这是我的代码&#34;背后的代码&#34;在c#
protected void btnAsp_Click(object sender, EventArgs e)
{
string value = Request.Form["street"];
}
答案 0 :(得分:0)
I hope you will find this helpful .
**Aspx Page**
<input type='button' id='btnAsp1' value='Shop Now' class='form-control'
value='Button:1' onclick='javascript:__doPostBack("btnAsp1");'
style='background-color:#3465aa; color:white' >
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['form1'];
if (!theForm) {
theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
</script>
**Code Behind**
protected void Page_Load(object sender, EventArgs e)
{
if (Request.Form["__EVENTTARGET"] != null &&
Request.Form["__EVENTTARGET"] == "btnAsp1")
{
btnAsp1_Click(null, null);
}
}
private void btnAsp1_Click(object sender, System.EventArgs e)
{
Response.Write("You Clicked on " +
Request.Form["__EVENTARGUMENT"].ToString());
}
答案 1 :(得分:0)
这是解决方案。 Defualt.aspx 页面的代码。
<%@ Register Src="~/WebUserControl.ascx" TagName="Add" TagPrefix="uc1"
%>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<uc1:Add runat="server" ID="ucAdres" WidthFirstCollumn="175px" />
</body>
</html>
这是WebUserControl.ascx的代码
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>
<form method="post" runat="server"
>
<h1>ASP.NET Controls</h1>
<br />
<asp:Label runat="server" Text="Street" ID="lable"></asp:Label>
<asp:TextBox runat="server" ID="tbStreet" Text="Text Asp.net text box"></asp:TextBox><br />
<br />
<asp:Button ID="btnAsp" runat="server" Text="Button Asp.net" OnClick="btnAsp_Click"/><br />
<input type="submit" id="btnHtml" value="Html Button" />
<h2>-------------------------------</h2>
<h1>Html Controls</h1>
Street
<input type="text" name="street" id="street" value="Text coming from HTML5"">
<br />
<br />
<button type="button" id="btnStreet">Button HTML!</button>
</form>
这是WebUserControl.ascx.cs的代码
protected void btnAsp_Click(object sender, EventArgs e)
{
string value = Page.Request.Form["street"].ToString();
if (value != null)
{
tbStreet.Text = value;
} else
{
tbStreet.Text = "Nooooooooo";
}
}
我再次解释一下,你有一个WebUserControl,你有两种类型的控件(Asp.net和html)。你想要做的是从HTML复制到asp.net而不用runat =&#34; server&#34;。 我经常遇到 Form 的问题,所以最后我发现我有2个表单,1个在WebUserControl上,1个在Default.aspx上。
答案 2 :(得分:0)
您的屏幕截图显示了以下行中的断点:
string value = Request.Form["street"];
值为null
。但是,从Using Breakpoints on MSDN(强调我的):
当您在调试器中运行此代码时,只要执行了断点,就会停止执行,执行该行代码之前
如果你转到下一行,该行将运行并填充value
。要将其复制到ASP.net控件中,以下内容应该足够了:
protected void btnAsp_Click(object sender, EventArgs e)
{
tbStreet.Text = Request.Form["street"];
}
我会提醒您,您尝试做的事情可能有更好的解决方案,因此,即使这可以解决您的直接问题,您也可能会发现其他问题更进一步。