Asp.net mvc 4 带有提交按钮的ASP.Net Mvc Ajax.BeginForm将触发两次
当使用Ajax.BeginForm(“Index”)时,新的AjaxOptions(…)带有提交按钮。它调用action方法两次。原因可能是什么?当我用Asp.net mvc 4 带有提交按钮的ASP.Net Mvc Ajax.BeginForm将触发两次,asp.net-mvc-4,asp.net-ajax,Asp.net Mvc 4,Asp.net Ajax,当使用Ajax.BeginForm(“Index”)时,新的AjaxOptions(…)带有提交按钮。它调用action方法两次。原因可能是什么?当我用Html.BeginForm替换Ajax.BeginForm时,它可以正常工作 @using (Ajax.BeginForm(new AjaxOptions { OnSuccess = "onTemplateSaveSuccess(data);", OnComplete = "hideProgress();" })) {
Html.BeginForm
替换Ajax.BeginForm
时,它可以正常工作
@using (Ajax.BeginForm(new AjaxOptions { OnSuccess = "onTemplateSaveSuccess(data);", OnComplete = "hideProgress();" }))
{
@Html.AntiForgeryToken()
<input type="hidden" name="templatePageNumber" id="templatePageNumber" />
<input type="hidden" name="templatePageSize" id="templatePageSize" />
@Html.HiddenFor(model => model.TemplateCode)
<div class="event-subheading">Templates </div>
<div id="TemplateInputDiv">
<fieldset>
<ul>
<li>
<label>Template Name </label>
@Html.TextBoxFor(model => model.TemplateName)
@Html.ValidationMessageFor(model => model.TemplateName)
</li>
<li>
<label>Type</label>
<input type="radio" name="TemplateType" class="radio-cover" value="1" checked="checked" /><span class="radio-txt">Email </span> <input type="radio" name="TemplateType" class="radio-cover" value="2" /> <span class="radio-txt">SMS </span> <input type="radio" name="TemplateType" class="radio-cover" value="3" /><span class="radio-txt">Badge</span>
<div class="clearfix"></div>
</li>
<li>
<label>Content </label>
@Html.TextAreaFor(model => model.TemplateContent, 10, 40, null)
@Html.ValidationMessageFor(model => model.TemplateContent)
</li>
<li>
<label></label><a href="myModal" data-toggle="modal" data-target="#myModal"><label class="hint--success" style="color:#23527c;font-weight:bold;" data-hint="Use hand button in the Dynamic Data window to insert the dynamic data tag to the current position of the editor."><b>Dynamic Data</b></label></a>
<span></span>
</li>
<li>
<label></label>
<input type="submit" value="Save" id="submitTemplate" name="submitTemplate" class="sub_mit" />
<input type="reset" value="Cancel" class="sub_mit" id="cancel" />
</li>
</ul>
</fieldset>
<div class="clearfix"></div>
</div>
}
@使用(Ajax.BeginForm(新的AjaxOptions{OnSuccess=“onTemplateSaveSuccess(data);”,OnComplete=“hideProgress();”)
{
@Html.AntiForgeryToken()
@Html.HiddenFor(model=>model.TemplateCode)
模板
-
模板名称
@Html.TextBoxFor(model=>model.TemplateName)
@Html.ValidationMessageFor(model=>model.TemplateName)
-
类型
电子邮件短信徽章
-
内容
@Html.TextAreaFor(model=>model.TemplateContent,10,40,null)
@Html.ValidationMessageFor(model=>model.TemplateContent)
-
-
}
检查onTemplateSaveSuccess(数据)method,可能它再次启动了ajax reuqest
请共享onTemplateSaveSuccess方法的代码。请尝试从此方法返回false,并在此方法末尾设置e.preventDefault()。如果这不起作用,那么也试着写e.stopPropagation()您向我们展示的任何东西都不会导致这种情况。什么是
onTemplateSaveSuccess(data)
?可能是jquery不引人注目的ajax包含了两次。导致此问题的原因检查onTemplateSaveSuccess(数据);方法,可能它再次启动了ajax reuqest。Ehsan,把它作为一个正式的回答,这样我就可以在上面打勾了。