2013-12-13 75 views
2

我在我的部分视图中有一个表单,通过调用ajax来提交。但问题是表单提交多个表格。我发现很奇怪的原因,我不知道如何解决它。表单提交多次asp.net mvc

在主视图中,

@Html.Partial("_Jobs", Model.UserJobs) 

@section Scripts { 

    @Scripts.Render("~/bundles/jqueryui") 
    @Scripts.Render("~/bundles/jqueryval") 
} 

我在我的局部视图我有一个表格

<script> 

    function onSuccess() { 
     $.fancybox.close(); 
     console.log("success"); 
     return false; 
    } 

    function onFailure() { 
     alert("fail"); 
    } 

</script> 


@using (Ajax.BeginForm("CreateJob", "Jobs", null, 
     new AjaxOptions() 
      { 
       HttpMethod = "POST", 
       InsertionMode = InsertionMode.Replace, 
       OnSuccess = "onSuccess", 
       OnFailure = "onFailure", 
       UpdateTargetId = "userJobsList" 
      }, null)) 
{ 
    @Html.ValidationSummary() 


     <div class="col-right"> 


      @Html.DropDownListFor(model => model.SelectedProjectId, Model.ProjectList, "Select an Option", new { @class = "text-box", id = "projects" }) 

      @Html.TextBoxFor(model => model.Title, new { @class = "text-box", placeholder = "Job Title" }) 
      <br /> 
      @Html.TextAreaFor(model => model.Description, new { @class = "text-box", placeholder = "Description" }) 

      <div class="col-right-1"> 


       <button id="createButton"> 
        Create 
       </button> 


       <button id="cancelButton"> 
        Cancel 
       </button> 

      </div> 
     </div> 
    </div> 
} 

通过给“jqueryval”的在主视图中的参考不验证在局部视图,但形式表单以正常方式提交(即单一时间)

为了验证表单我然后从主视图中删除引用'jquery val并在表单之后放入部分视图中,由makin g这些小改动形式在提交前开始验证,但毕竟验证通过表单提交多次。任何机构都可以帮助我找出为什么它会多次提交。什么是最好的地方把'jqueryval'作为参考?

回答

4

您可能在页面中有多个对jquery.unobtrusive-ajax.js的引用。查看页面源代码并确保您拥有对该库的单一引用。

+0

不,我的页面上没有多个jquery.unobtrusive-ajax.js引用。由于我在部分视图中呈现此脚本,所以我可以说每次部分视图呈现此脚本时再次加载。可能会导致这个问题。但是,当我从部分视图中删除脚本并放入主视图时,表单不再执行验证。任何建议,我需要做什么解决这个问题?谢谢 – user2866746

+0

好评!!!!!为我工作很好! – Funky

+0

这对我来说也很好。 – cyclical