Asp.Net WebForm ViewState

文章讨论了ASP.NET中ViewState的作用,它是如何保存服务器控件的状态以在PostBack后恢复。此外,提到了在按钮点击事件处理中,`__EVENTTARGET`的作用以及如何通过`__doPostBack`函数触发特定控件的事件。文章还展示了隐藏表单字段`__EVENTTARGET`和`__EVENTARGUMENT`在回发请求中的重要性,并解释了输入提交按钮如何影响表单数据提交。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ViewState用于保存服务器控件(runat="server")状态便于在触发回调后(PostBack)恢复页面。

页面拖入一个Form id="form1" runat="server",里面添加一个<asp:Button id="Button1" Text="删除" OnClick="Button1_Click" OnClientClick="return checkDel(this)" />

<form id="form1" class="pure-form" name="form1" runat="server">
    <input type="text" id="txtName" name="Name" placeholder="名称" size="10"/>
    <input name="Reset" type="submit" value="重置" />
    <input name="Search" type="submit" value="查询" />
    <button name="Button1" type="button" class="pure-button pure-button-primary" onclick="doSearch()">查询</button>
    <asp:Button runat="server" UseSubmitBehavior="false" ID="Button1" OnClick="Button1_Click" class="pure-button pure-button-primary" Text="删除" />
</form>
<label runat="server" id="lblFormKeys"></label><br />
<label runat="server" id="lblEventTarget"></label>
<script src="/js/jquery-3.6.4.min.js"></script>
<script>
    function doSearch() {
        var btn = $("#txtName").val() || "Button1";
        __doPostBack(btn, "");
    }
</script>

 

1.点击按钮后台Request["__EVENTTARGET"]为null,给Button添加UseSubmitBehavior="false"即可。此时查看客户端代码可以看到自动在form元素下添加了一下内容:

<div class="aspNetHidden">
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="" />
</div>

<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['form1'];
if (!theForm) {
    theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}
//]]>
</script>
<div class="aspNetHidden">

	<input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="" />
	<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="" />
</div>

2.input submit点击时会将自身的name值作为表单域提交

点击重置:

 点击查询:

查询调用删除:

3.设置“__EVENTTARGET”表单域可以出发后台相应控件的事件。

比如__doPostBack("Button1","")会触发Button1_Click事件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闪耀星星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值