从innerHTML中获取name属性

本文关键字:name 属性 获取 innerHTML | 更新日期: 2023-09-27 18:25:55

我将内部Html保存在表单表中的Html字段中,并在代码隐藏中获取内部Html,如下所示,我想在代码隐藏的innerHTML中实现名称属性(内部Html有输入类型元素,每个输入类型都有一个名称属性,我想获取这些名称属性)。这样做可能吗

例如< <input name="LastName" type="text" id="LastName">

C#方法

protected void GetFormHTML()
{
    if (con.State == ConnectionState.Closed)
    {
        con.Open();
    }
    cmd = new SqlCommand("select * from Forms where FormId='" + 
                         Request.QueryString["ID"].ToString() + "'", con);
    dr = cmd.ExecuteReader();
    if (dr.HasRows)
    {
        dr.Read();
        lblFormName.Text = dr["Name"].ToString();
        DivHTML.InnerHtml = dr["HTML"].ToString().Trim();
    }
    dr.Close();
    cmd.Dispose();
    con.Close();
}

从innerHTML中获取name属性

听起来您正试图解析存储在数据库中的HTML字符串。你需要一个库,例如HTML敏捷包。

至少Convert.ToInt32(Request.QueryString["ID"].ToString())或更好,请使用ADO.NET参数。

看起来这个问题以前可能已经得到了回答。Html 5不是xml。所以可能需要确认这个库可以使用它。

在C#中解析html的最佳方法是什么?

我不知道你在使用什么类型的SQL,但必须注意这个操作:

if (dr.HasRows)
    {
        dr.Read();
        ...
    }

例如:SQLite正在使用队列,如果没有​​完全查询然后在将来的某个时候抛出异常,当您想要执行其他查询,但之前没有进行完全查询时。更好的方式:

if(dr.HasRows)
{
   while(dr.Read())
   {
      ...
   }
}

或者,如果您只希望first item在sql查询中使用LIMIT,或者通过以下方式:

if(dr.HasRows)
{
    bool IsFirst = true;
    while(dr.Read())
    {
       if(IsFirst)
       {
           ...
          IsFirst = false;
       }
    }
}

但每次都使用while(dr.Read()),而不是其他方式。

与其使用标准HTML表单输入元素,为什么不使用ASP.NET控件呢。您所要做的就是将"runat=server"属性放入现有的表单输入元素中,然后您就可以从CodeBehind引用您想要的所有内容。

顺便说一句,有很多更好的方法可以实现你想要做的事情。我现在可以喋喋不休地说一大堆。这些都没有特定的顺序,都涉及到你需要完成的事情的各个方面。也就是说,这些建议并不是为了让你从中挑选一个。这些是编程和/或.NET框架解决方案的集合,每个解决方案都可以完成不同的任务。您可以使用它们的组合,也可以仅使用一个。一些你可以用来增强你已经做过的事情。使用LINQ而不是内联SQL(或者内联SQL以外的任何东西)将是一个良好的开端。

  1. 数据绑定
  2. LINQ
  3. ORM-实体框架
  4. 用"using"语句替换现有的打开/关闭连接

还有很多其他方法可以做你想做的事情。这些只是一些概念/想法,在对你已经拥有的东西做更多的工作之前,你绝对应该研究一下。