设置RUNAT =“服务器”从JavaScript(Set runat=“server” from

2019-10-20 10:36发布

有没有一种方法来设置runat从客户端JavaScript属性? 我需要的页面加载后,将行添加到一个表,我需要让自己的细胞的数据提供给服务器。 我与制造第一(情侣)行(S)OK runat="server" ,但我不知道用户将有多少行想要的,所以它不只是一个加入一些隐藏的行和显示的事他们当用户点击“添加新行”代替。

我能想到的几种方法可以做到这一点:

  1. 回发到每一个用户点击“添加新行”按钮”,并且处理时间的页面runat在服务器上,而不是在JavaScript / jQuery的属性。我不想这样做,但它似乎是唯一正确的方式,我可能会。

  2. 添加runat="server"与jQuery的细胞,然后引用它们的下一次我做了回发,但什么都不做与他们目前。 这对我来说是理想的解决方案,但我不知道,如果ASP.NET以这种方式工作。 考虑的WebForms成立之前的JavaScript开发了拍下来,我们可以在网页之后元素添加到页面的想法被加载 ,我没有抱着我的呼吸。

  3. table或可能tbodyrunat属性,然后参照其子不知何故。 这也将是比#1好,但我也不能确定如何做到这一点,或者即使它的确可以做到。

这里是想我做一个简化的版本:

<table runat="server" id="this_table">
    <tbody runat="server" id="this_table_body">
        <tr>
            <td class="this_table_cell">Some Content</td>
            <td><button type="button" class="this_table_button">Please click this button</button>
        </tr>
    </tbody>
</table>

和jQuery的的简化版本:

$("#<%=this_table_body.ClientID%>").on("click", ".this_table_button", function() {
    $("<%=this_table_body.ClientID%>").append("<tr>
            <td class="this_table_cell">Some Content</td>
            <td><button type="button" class="this_table_button">Please click this button</button>
        </tr>
    );
});

Answer 1:

这没有任何意义,因为更改DOM不推回至当页回服务器。 并称,没有任何含义的浏览器(如属性runat )将不会有任何效果。 即使你的表被设置为runat="server" ,客户端修改该表不是由服务器检测到。

选项1(回传每次添加一个新行时间)也许是最简单的方法,并且基本上是ASP.NET的设计,因为1.0版本做(前网络应用开始流行)

对于一个更动感的体验,你需要做的是存储您的客户端的本地更改,然后张贴在通过一个标准的表单元素,备份服务器,如隐藏的输入字段。 可以隐藏字段的任意数量添加至<form>元素,并且使用在服务器上读取它们Request对象。 或者,你可以或许通过JSON或XML序列化的新行数据。 如果你只是想在数据库中保存新行,也许是实现一个保存按钮发送一个新行通过AJAX的服务器,并立即将其保存。



Answer 2:

runat="server"

...是没有任何意义的浏览器的服务器指令参数。 服务器线了基于该指令显示网页,HTML,并将其发送到客户端浏览器之前的任何方法。 到时候JS可以做出改变的元素,并设置runat="server"的服务器将无法接收指令。



文章来源: Set runat=“server” from JavaScript