【问题标题】:Copy value from HTML controls to ASP.NET user control将值从 HTML 控件复制到 ASP.NET 用户控件
【发布时间】:2017-10-27 08:31:12
【问题描述】:

我是这个世界的新手。让我用照片解释一下。

这是第一张照片,我有一个名为“Adress.ascx”的用户控件,在此页面上有 2 种不同类型的控件。

  1. Asp.net 控件(红色)

  2. Html 控件(绿色)

这个用户控件,我已经在另一个名为Index.aspx

的页面上实现了

我想要做的是,每当我点击“复制按钮”按钮时,html 控件中的任何内容都会复制到用户控件。

在 Html 控件上,我使用 Google Maps API 来搜索地址。

即使我不将我的用户控件实现到另一个页面,我也无法将 html 控件值复制到 asp.net 用户控件。

例如,我在用户控件上有一个名为 tbStreet 的 asp:TextBox 和一个 ID 为 id=street_name 的 Html 文本框。我想将 street_name 的值复制到 tbStreet

Asp.net 控制代码

 <asp:TextBox ID="tbStreet" runat="server" MaxLength="50" 
 CssClass="inputfield M"></asp:TextBox></td>

html控制代码

<input class="field" id="street_name" name="streetName"
            disabled="true"></input></td>

按钮代码

protected void btnCopy_Click(object sender, EventArgs e)
    {

        string street = Request.Form["street_name"];

    }

但我在变量 street

中没有得到任何值

【问题讨论】:

  • 请参考这个How to ask
  • 我不明白这个问题。这些图片比什么都让我感到困惑。
  • 提供minimal reproducible example 代码来解释您的问题 - 没有代码很难从这个问题中找到解决方案。
  • 请找答案here我自己解决了。

标签: javascript c# html asp.net


【解决方案1】:

如果你有这样的 HTML 输入:

<input class="field" id="street_name" name="streetName" />

您应该将name 属性值设置为Request.Form 参数而不是id

protected void btnCopy_Click(object sender, EventArgs e)
{
    string street = Request.Form["streetName"].ToString();
}

请注意disabled 属性会阻止在回发中提交值,如果您只想禁止用户编辑其值,我建议删除该属性并将其替换为readonly

<input class="field" id="street_name" name="streetName" readonly="readonly" />

如果文本框属于用户控件,则可以创建一个属性来从中获取文本值,假设输入元素具有runat="server"属性:

public string StreetName
{
    get { return street_name.Text; }
}

然后您可以使用以下命令访问 usercontrol 对象属性:

UserControl control = (UserControl)Page.FindControl("UserControlId");
string street = control.StreetName;

【讨论】:

  • 我尝试过创建一个房产,但没有成功。我认为它是一个用户控件,也许我们需要做一些额外的事情。如果我只是创建一个普通的 aspx 页面,我可以检索这些值,但从用户控件中我不知道缺少什么。
【解决方案2】:

查看文档 - https://msdn.microsoft.com/en-us/library/ms525985(v=vs.90).aspx

元素是通过名称而不是ID来引用的,所以:

string street = Request.Form["streetName"];

【讨论】:

  • 非常感谢,我用ID也试过了,但运气不好。
  • 是的,您的代码显示您使用的是 ID,您是否尝试过使用 Name?
  • 是的,我尝试过使用 Name。也许我必须像 (Adres)Request.Form["streetName"]; 那样投射?因为它在 UserControl 页面上?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-25
  • 2010-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多