使用runat =" server"验证viewstate MAC失败

时间:2013-01-29 12:21:48

标签: c# javascript asp.net .net

的Javascript

var form = document.getElementById('date_budget');
pop('', 'exp_upd', '95', '80');
form.action = "test.aspx";
form.target = 'exp_upd';
form.submit();

HTML

<form id="date_budget" name="date_budget" method="post">
    <table>
    <tr>
        <!--#include file="zone.inc" -->
        <td id='mlodg_loc'><select name="loc" id="loc">
                <option value="Select Location">Select Location</option>
            </select></td>
        <td>
            <select name="month" id="month">    
                <option value="1">1</option>
            </select>
        </td>
        <td>
            <select name="year" id="year">
                <option value="2013">2013</option>
            </select>
        </td>
    </tr>
    </table>
</form>

上面的代码打开一个弹出窗口,但是当我通过添加runat属性更改html时,我得到“viewstate MAC验证失败”,以及一些额外的垃圾。修改后的html位于

之下
<form id="date_budget" name="date_budget" method="post" runat="server">
    <table>
        <tr>
            <!--#include file="zone.inc" -->
        <td id='mlodg_loc'><select name="loc" id="loc" runat="server">
            <option value="Select Location">Select Location</option>
            </select></td>
            <td>
                <select name="month" id="month" runat="server"> 
                <option value="1">1</option>
                </select>
            </td>
            <td>
                <select name="year" id="year" runat="server">
                <option value="2013">2013</option>
                </select>
            </td>
        </tr>
    </table>
</form>

是否有任何解决方法既可以使用runat服务器又可以在JS中使用相同的元素,而不使用像<%= hidBT.ClientID %>这样的asp标签,我不希望这样做。

2 个答案:

答案 0 :(得分:0)

  1. 尝试在 web.config (或)

  2. 中添加此<pages enableViewStateMac="false">
  3. 尝试将此<form id="date_budget" name="date_budget" method="post">更改为

    <form id="date_budget" name="date_budget" runat="server">

    不应指定方法或操作

答案 1 :(得分:0)

您可以尝试在控件或@Page指令中设置ClientIDMode =“Static”。这将使表单的id保持为“date_budget”。

否则,如果您不需要页面上的ViewState,则可以使用EnableViewState =“false”在@Page指令中禁用它。