4

想象一下,

第 1 步:ASPX 页面加载。
第 2 步:Button 触发一个脚本,该脚本创建一个带有 id 或 class 标签的 html 元素(div、span 等),包括 runat server 属性。

我的问题是,

最后一步:从我的 C# 文件中,如何访问该元素并获取它的内部 html,以便我可以将其保存为字符串?

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

4

3 回答 3

5

如果不对服务器进行完整的回发,就无法创建“真正的” runat=server 元素/控件。

最好的方法可能是在提交页面之前编写一些脚本,将 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以了解该方法的工作原理。

于 2012-05-14T07:28:05.037 回答
0

向标签添加runat="server"属性以使其成为 HTML 控件,并且可以通过其 ID 从 .cs 文件中访问

于 2012-05-14T07:20:15.657 回答
0

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

于 2012-05-14T07:27:48.027 回答