我在表格中保存内部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();
}
答案 0 :(得分:3)
听起来您正在尝试解析存储在数据库中的HTML字符串。你需要一个库,例如HTML Agility Pack
至少Convert.ToInt32(Request.QueryString [“ID”]。ToString())或者更好,使用ADO.NET参数。
答案 1 :(得分:0)
以前可能已经回答过了。 Html 5不是xml。因此可能需要确认此库可以使用它。
答案 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)将是一个良好的开端。
还有很多其他方法可以做你想做的事情。这些只是一些概念/想法,你应该在对已有的东西进行更多的工作之前进行研究。