Codebehind没有检测到javascript中改变的显示

时间:2014-09-18 15:41:10

标签: javascript jquery asp.net vb.net

当tbody内的文本框被修改时,我在javascript调用中显示/隐藏的表中有一个tbody。这个tbody最初设置为从其初始标记显示= none,但如果它已经包含一个值,则显示在代码隐藏中。

标记:

<tbody  class="tbDOIndustryModifierCls" style="width: 100%;display:none;margin:0" id="tbDOIndustryModifierComments" runat="server">
     <td>
         <asp:Label CssClass="raterLabel lblDOIndustryModifierComments" ID="Label11" runat="server">&emsp;&emsp;Comments:
         </asp:Label>
     </td>
     <td colspan="2">
         <asp:textbox Width="100%" ID="txtDOIndustryModifierComments" CssClass="txtDOIndustryModifierComments" runat="server"></asp:textbox>
     </td>
</tbody>

Codebehind页面加载:

 If Not IsNothing(comment) Then
      txtDOIndustryModifierComments.Text = comment
      tbDOIndustryModifierComments.Style.Add(DISPLAY, BLOCK)
 End If

所以场景是“comment”字段有一个值,因此在页面加载的代码隐藏中,tbody设置为display=BLOCK。然后用户使用控件混淆,同样tbody设置为display = none(通过jquery hide())。

我还有一个“保存”按钮,在我的vb.net代码隐藏中处理。

我遇到的问题是我可以通过javascript(使用jquery hide())将tbody的显示属性更改为“none”,但是当我点击“保存”按钮时,代码隐藏仍然将tbody视为display = block

codebehind save方法(javascript设置display=none后此检查评估为false

 If (tbDOIndustryModifierComments.Style(DISPLAY) = NONE) Then _
 'logic

如果在客户端修改了属性,有没有办法查看tbody(或其文本框)是否隐藏或显示在代码隐藏中?

对不起,如果我的措辞不对,请告诉我任何我可以澄清的内容。谢谢你的时间。

1 个答案:

答案 0 :(得分:1)

在回发后传回服务器的唯一信息是<input><textarea><select>等元素中保存的值以及ASP.NET存储的信息在视图状态(它本身存储在<input type='hidden'>中。(这些是ASP.NET在显示页面时创建(呈现)的基本HTML元素。)

这意味着如果您在客户端动态更改这些基本元素之外的任何内容,它们将不会自动发送回服务器。

我建议你做的是创建一个新的<asp:HiddenField>,它将存储你的表体的状态。然后在回发后你可以使用该字段中的值来查看是否需要显示/隐藏你的表体。

(请记住还要在页面的初始渲染中的隐藏字段中设置值,以便即使您不做任何更改也能获得正确的值)