在没有runat ="服务器"

时间:2017-10-30 09:46:37

标签: c# html asp.net

我是这个世界的新手。

enter image description here

如图所示。这是我的 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"];
}

当我运行此代码时,我得到的值是 null enter image description here

3 个答案:

答案 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"];
}

我会提醒您,您尝试做的事情可能有更好的解决方案,因此,即使这可以解决您的直接问题,您也可能会发现其他问题更进一步。