How to access viewstate using javascript?

与世无争的帅哥 提交于 2019-11-28 20:40:54

I would suggests to use RegisterHiddenField than mixing server/js codes:

You may try this sample:

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

On your javascript:

var vCode = document.getElementById("vCode");
alert(vCode);

You can simply access the hidden form element that holds the viewstate.

The name of the control is __viewstate.

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="..." />

var vCode = documents.forms[0]['__VIEWSTATE'].Value;
alert(dateView);

Of course, this will give you the encrypted/encoded/compressed viewstate.

If you want specific values from it, you may find it better to record them in hidden fields and access those.

The Page.ClientScript.RegisterHiddenField did not work for me and returned null. You can do like this:

1-First solution: define a hidden field and make sure you set runat=server

  <input type="hidden"  id="myhiddenField" runat="server" value="" />

then in your code behind assign any value you want to it

 myhiddenField.Value= ViewState["name"].ToString();// or assign any value you want

in your javascript access it like this:

 <script type="text/javascript">  
         function test() 
              {
                var name = document.getElementById('myhiddenField').value;
                alert(name)
             }
 </script>

2-Second solution

In case for some reasons you don't want to have a server input control you can put the hidden field in a literal tag

<asp:literal id="literal1" runat="server"><input type="hidden" id="myhiddenField" value="{0}"/></asp:literal>

and then assign a value to the literal in codebehind like this

literal1.Text = string.Format(literal1.Text, "somevalue");  // somevlue can be your ViewState value

then access it in javascript as usual

   var name = document.getElementById('myhiddenField').value;
            alert(name)

Note: if you are using update panels put the hiddenfields inside the contenttemplate tag of the updatepanel

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!