当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">  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
(或其文本框)是否隐藏或显示在代码隐藏中?
对不起,如果我的措辞不对,请告诉我任何我可以澄清的内容。谢谢你的时间。
答案 0 :(得分:1)
在回发后传回服务器的唯一信息是<input>
,<textarea>
或<select>
等元素中保存的值以及ASP.NET存储的信息在视图状态(它本身存储在<input type='hidden'>
中。(这些是ASP.NET在显示页面时创建(呈现)的基本HTML元素。)
这意味着如果您在客户端动态更改这些基本元素之外的任何内容,它们将不会自动发送回服务器。
我建议你做的是创建一个新的<asp:HiddenField>
,它将存储你的表体的状态。然后在回发后你可以使用该字段中的值来查看是否需要显示/隐藏你的表体。
(请记住还要在页面的初始渲染中的隐藏字段中设置值,以便即使您不做任何更改也能获得正确的值)