有没有办法在后面的代码中使用变量引用asp ID

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (39)

我正在尝试使用ac#变量来删除属性。

我在实际编写应用程序之前测试我的方法。

我已经尝试过javascript和jQuery,但没有发现任何可以在代码隐藏中用字符串值替换TextBox ID的内容。

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="WebApplication2.index" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TextBox ID="myText" runat="server" required="required"></asp:TextBox>

    </div>
    </form>

</body>

</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication2
{
    public partial class index : System.Web.UI.Page 
    {
        protected void Page_Load(object sender, EventArgs e)
        {

            string straspID = "myText";


            bool fieldRequired = false;

            if (fieldRequired == false)
            {

                //FindControl("myText");
                FindControl(straspID);
                if (straspID != null)
           //         
                myText.Attributes.Remove("required");
          // I want to use straspID instead of the ID of the asp page
          // which will returned from a table - I'm simulating here
          // I get an error if I use straspID for remove attribute 
            }


        }

    }
}

我的预期结果是删除所选ID的属性。我目前收到语法错误。

提问于
用户回答回答于
            FindControl(straspID);

没有按照你的想法去做。

你能检查你的index.aspx.designer.cs文件,看看是否有一个名为'myText'的受保护成员变量?

如果有,你可以这样做: -

        if (fieldRequired == false)
        {
            myText.Attributes.Remove("required");
        }

如果没有名为myText的受保护成员,请在类级别添加一个'index': -

namespace WebApplication2
{
    public partial class index : System.Web.UI.Page 
    {
        protected Textbox myText;

        (etc)

只要您声明它的类型正确并且具有相同的名称和大小写,就不需要使用FindControl来访问服务器控件。

扫码关注云+社区

领取腾讯云代金券