从innerHTML获取name属性

时间:2014-10-07 20:01:05

标签: c# innerhtml

我在表格中保存内部Html,在 HTML 字段中,并在Code Behind中获取内部Html,如下所示,我想实现名称属性(内部html具有输入类型)元素和每个输入类型都有一个name属性,我希望在innerHTML后面的代码中得到那些name属性。这有可能吗?

例如< <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();
}

4 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

以前可能已经回答过了。 Html 5不是xml。因此可能需要确认此库可以使用它。

What is the best way to parse html in C#?

答案 2 :(得分:0)

我不知道您使用的SQL类型,但必须注意此操作:

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

例如:SQLite使用队列,如果还没有进行完整查询,那么在将来要抛出异常时会执行其他查询,但之前没有进行完整查询。更好的方式:

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

或者如果您只想在SQL查询中使用first item或通过这种方式使用LIMIT

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

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

答案 3 :(得分:0)

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

作为旁注,有很多,更好的方法来实现你想要做的事情。我现在可以滔滔不绝地说。这些都没有特别的顺序,所有这些都涉及到你需要完成的各个方面。意思是,这些建议不是你可以挑选其中的一个。这些是编程和/或.NET框架解决方案的集合,每个解决方案都可以实现不同的功能。您可以组合使用它们,也可以只使用一种。有些你可以用它来增强你已经完成的工作。使用LINQ而不是内联SQL(或其他任何内联SQL)将是一个良好的开端。

  1. 数据绑定
  2. LINQ
  3. ORM - 实体框架
  4. 使用“using”语句替换现有的打开/关闭连接。
  5. 还有很多其他方法可以做你想做的事情。这些只是一些概念/想法,你应该在对已有的东西进行更多的工作之前进行研究。