Suk*_*van 15 javascript asp.net viewstate
我试图在客户端访问视图状态但是在出现异常后:

JAVASCRIPT:
<script language="javascript" type="text/javascript">
var vCode = '<%=ViewState("code")%>';
alert(dateView);
</script>
Run Code Online (Sandbox Code Playgroud)
代码背后:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
ViewState("code") = "EE"
End Sub
Run Code Online (Sandbox Code Playgroud)
有谁建议我怎么做?
jer*_*jer 16
我建议使用RegisterHiddenField而不是混合server/js代码:
你可以尝试这个样本:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
ViewState("code") = "EE"
Page.ClientScript.RegisterHiddenField("vCode", ViewState("code"))
End Sub
Run Code Online (Sandbox Code Playgroud)
在你的JavaScript上:
var vCode = document.getElementById("vCode");
alert(vCode);
Run Code Online (Sandbox Code Playgroud)
您只需访问包含视图状态的隐藏表单元素即可.
控件的名称是__viewstate.
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="..." />
var vCode = documents.forms[0]['__VIEWSTATE'].Value;
alert(dateView);
Run Code Online (Sandbox Code Playgroud)
当然,这将为您提供加密/编码/压缩的视图状态.
如果您需要特定值,您可能会发现将它们记录在隐藏字段中并访问它们会更好.
Page.ClientScript.RegisterHiddenField对我不起作用并返回null.你可以这样做:
1-First解决方案: 定义隐藏字段并确保设置runat = server
<input type="hidden" id="myhiddenField" runat="server" value="" />
Run Code Online (Sandbox Code Playgroud)
然后在你的代码后面分配你想要的任何值
myhiddenField.Value= ViewState["name"].ToString();// or assign any value you want
Run Code Online (Sandbox Code Playgroud)
在你的JavaScript中访问它像这样:
<script type="text/javascript">
function test()
{
var name = document.getElementById('myhiddenField').value;
alert(name)
}
</script>
Run Code Online (Sandbox Code Playgroud)
2秒解决方案
如果由于某些原因您不想拥有服务器输入控件,则可以将隐藏字段放在文字标记中
<asp:literal id="literal1" runat="server"><input type="hidden" id="myhiddenField" value="{0}"/></asp:literal>
Run Code Online (Sandbox Code Playgroud)
然后像这样在代码隐藏中为文字赋值
literal1.Text = string.Format(literal1.Text, "somevalue"); // somevlue can be your ViewState value
Run Code Online (Sandbox Code Playgroud)
然后像往常一样在javascript中访问它
var name = document.getElementById('myhiddenField').value;
alert(name)
Run Code Online (Sandbox Code Playgroud)
注意:如果您使用的是更新面板,请将隐藏字段放在updatepanel的contenttemplate标记内
| 归档时间: |
|
| 查看次数: |
76908 次 |
| 最近记录: |