Ajax.BeginForm VS Html.BeginForm

本文详细对比了AJAX.BeginForm与HTML.BeginForm在网页登录表单中的应用。AJAX.BeginForm支持局部刷新,不改变浏览器地址,适用于需要进行无刷新操作的场景;而HTML.BeginForm则会在提交后跳转页面并更改地址栏地址。

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

有的人说,AJAX一听,高大上,HTML一听,死老土,所以AJAX更好。其实这是错误的。每种方法有它不同的用途。现在做如下总结:

@using (Ajax.BeginForm("Login", "Account", new AjaxOptions
{
	//InsertionMode=InsertionMode.Replace,
	HttpMethod = "POST",
	//OnFailure="searchFailed",
	//LoadingElementId="ajax-loader",
	UpdateTargetId = "LogonContainer",
	OnSuccess = "123 "
}))
{
	<h2 class="form-signin-heading">欢迎登陆</h2>
	@Html.TextBoxFor(m => m.UserName, new { @class = "form-control", @placeholder = "Email Address", @required = "true", @autofocus = "true" })
	@Html.PasswordFor(m => m.Password, new { @class = "form-control", @placeholder = "PassWord", @required = "true" })
	@Html.LabelFor(m => m.Password, new { @id = "ajax-loader", @style = "display:none" })
	<label class="checkbox">
			<input type="checkbox" value="记住我" />阅读用户协议
		</label>
	<button class="btn btn-lg btn-primary btn-block" id="submitBtn" type="submit">登陆</button>
}

上面用的是AJAX.BeginForm 中如果更新了(不管成功或失败,反正都会返回东西吧?)

UpdateTargetId 这个东西就是你要刷新的DIV,你的返回的结果都往这里面丢。

而且最重要的一点区别是Ajax.BeginForm不会改变浏览器地址栏的地址,尽管你刷新了,不然怎么叫AJAX呢?

好了,下面的html.beginform就好理解了,如果你提交了,返回什么就是什么,而且如果你跳到另一个页面的话,页面地址栏会发生变化。

而Ajax.BeginForm呢?只会往UpdateTargetId里面填充你返回的结果,但是其他地方不刷新!

@using (Html.BeginForm("Login", "Account", FormMethod.Post, new { @role = "form", @class = "form-signin" }))
    {
	<h2 class="form-signin-heading">欢迎登陆</h2>
	@Html.TextBoxFor(m => m.UserName, new { @class = "form-control", @placeholder="Email Address", @required="true" ,@autofocus="true"})
	@*<input type="text" class="form-control" placeholder="Email Address" required autofocus />*@
@Html.PasswordFor(m => m.Password, new {@class="form-control", @placeholder="PassWord",@required="true" })
<label class="checkbox">
	<input type="checkbox" value="记住我" />阅读用户协议
    </label>
    <button class="btn btn-lg btn-primary btn-block" id="submitBtn">登陆</button>

所以简单点说,就是你需要做无刷新的时候要用AJAX更好,而有刷新的话,肯定选传统的html.beginform方式!好了,总结到这里了,以前一直不太懂这2者的区别,今天总算是弄懂了。特此总结。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值