2012-05-14 40 views
4

想象一下,asp.net:(c#客户端)如何访问页面加载后创建的html元素?

第1步:ASPX页面加载。
第2步:按钮触发一个脚本,该脚本使用id或class标记(包括runat服务器属性)创建html元素(div,span等)。

和我的问题是,

最后一步:从我的C#文件,如何访问元素,并得到它的内部HTML,这样我就可以把它保存为一个字符串?

PS:我将使用该字符串将其保存在我的mssql数据库中。

+1

您是否检查过'Request.Form',是您在那里找到的关注ID。 – V4Vendetta

回答

6

您不能创建“真实”runat =服务器元素/控件完整回发到服务器。

最好的方法可能是在提交页面之前编写一些将innerHTML存储到ASP.Net隐藏字段中的脚本。然后您可以访问此隐藏字段的值来获取数据。

如果您想要动态创建多个对象,则需要使用标准的html隐藏输入字段,因为您无法通过javascript创建asp.net服务器控件。

<input type="hidden" name="fieldData_1" value="control 1 html content"> 
<input type="hidden" name="fieldData_2" value="control 2 html content"> 

然后,您就可以从的Request.Form对象访问这些隐藏字段:

Request.Form["fieldData_1"] 

知道了这一点,你现在可以遍历表单数据过程中的所有动态字段

foreach (string fieldData in Request.Form) 
{ 
    if(fieldData.Contains("fieldData_"){ 
     //process the data for each field 
    } 
} 

也可能避免使用隐藏域都在一起,只是你把数据传给直接使用__doPostBack服务器(“”,“”)方法。这可以用许多不同的方式来实现,所以我只需要参考http://dopostback.net就可以了解该方法的工作原理。

+0

我认为这将解决我的问题,但是如果我的元素太多了,就像在html表中有很多行一样呢?我需要选择一行一行并保存字段? – user1358261

+0

我们用我们的内容管理系统来做到这一点。我们需要动态地将许多元素添加到页面,并在回发后存储内容。要做到这一点,而不是使用asp。净隐藏控制,动态创建标准的HTML隐藏控件( bgolson

+0

您可能希望为每个字段指定一个通用前缀,以便遍历Request.Params对象并处理每个新的隐藏字段。 – bgolson

0

添加runat="server"属性标签,使其HTML控制,并可以通过其ID是从cs文件访问

+0

我提到我使用runat =“server”属性。但是我的C#将尝试在页面加载时访问该元素,如果该元素是在页面加载后创建的,那么我的C#代码将会失败并在加载页面时出现问题。 – user1358261

+0

Okey您是否使用'Page.Controls.Add(ControlID)将HTML控件添加到页面? –

0

我认为你需要发布的元素内的HTML回服务器。我将在客户端函数中获取新创建元素的内部HTML,将其存储在隐藏字段中,然后致电__doPostBack('<hidden element id>', '');

+0

我真的认为你的答案和@bgolson会解决我的问题,我会尝试。我从来没有使用__doPostBack(),但我会去搜索它。但理论上我需要将我的信息保存在隐藏字段中,我的问题是我将拥有大量元素,例如要保存的表行,这些元素是在页面加载后创建的。 – user1358261

相关问题