的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标签,我不希望这样做。
答案 0 :(得分:0)
尝试在 web.config (或)
<pages enableViewStateMac="false">
尝试将此<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指令中禁用它。