2013-11-02 60 views
0

Ajax.BeginForm重定向到控制Ajax.BeginForm重定向到控制

我创建使用剃刀一个MVC 4应用程序。以下代码在我的表单上用于提交数据。

@using (Ajax.BeginForm("Topup", "Card", new AjaxOptions { HttpMethod = "POST", OnBegin = "Submitting_Form", OnComplete = "Submitted_Form", UpdateTargetId = "SendStatus"}, new { id="FormSubmit"})) 
{  
    @Html.ValidationSummary() 

    <ul data-role="listview" data-inset="true"> 
     <li data-role="list-divider">Mobile Topup</li> 

     <li data-role="fieldcontain"> 
      @Html.LabelFor(m => m.MobileNo)    
      @Html.TextBoxFor(m => m.MobileNo)    
     </li>  


     <li data-role="fieldcontain"> 
      <label class="ui-input-text" id="SendStatus">Test</label>    
     </li> 

     <li data-role="fieldcontain"> 
      <input type="submit" value="Topup" /> 
      <input type="button" value="Reset" onclick="this.form.reset(); $('#TopupDate').val(Current_Date('d-m-y'));" /> 
     </li>   



     <!--<li data-role="list-divider">Navigation</li>--> 
     <li>@Html.ActionLink("Home", "Index", "Home")</li> 
    </ul> 
} 

在控制器

//[AllowAnonymous] 
     [HttpPost] 
     public ActionResult Topup(TopupModel model) 
     { 
      try { 

      } 
      catch (Exception ExC) { 
       Bug.Bug BG = new Bug.Bug(); 
       BG.Send_Bug_Message(ExC); 
      } 
      //return PartialView("PartialTopup", model); 
      return Content("Success"); 
     } 

但经过呈交中,页面会自动重定向到控制器(例如,http://localhost:43289/Card/Topup用字符串“未定义”

为什么会这样?我已经列入以下库

<script src="/Scripts/jquery.unobtrusive-ajax.js"></script> 
<script src="/Scripts/jquery.validate.js"></script> 
<script src="/Scripts/jquery.validate.unobtrusive.js"></script> 


<script src="/Scripts/MicrosoftAjax.debug.js"></script> 
<script src="/Scripts/MicrosoftMvcAjax.debug.js"></script> 

检查后与Firebug,我有一些线索。

POST http://localhost:43289/Card/Topup?Length=4 200 OK 114ms jquery-2.0.3.js (line 7845) 
POST http://localhost:43289/Card/Topup?Length=4 200 OK 113ms jquery-2.0.3.js (line 7845) 

它发生了两次。为什么? 请帮我解决这个问题。

回答

1

傻冒使用了错误的过载,现在你AjaxOptions在路由值参数, 用这个代替:

@using (Ajax.BeginForm("Topup", "Card", null, new AjaxOptions { HttpMethod = "POST", OnBegin = "Submitting_Form", OnComplete = "Submitted_Form", UpdateTargetId = "SendStatus"}, new { id="FormSubmit"})) 

当你看到长查询字符串,它实际上是一个暗示,你是使用不正确的参数。

UPDATE:

我能想到为什么它张贴两次,现在的唯一原因是,你要引用您的脚本的两倍。不要把脚本放在你的部分。只要把它放在主视图或你的layout视图