2012-02-07 10 views
1

アプリケーションで 'Ajax.BeginForm'を使用していますが、何らかの理由でフォームが{controller}/{action}にリダイレクトされています。start {OnComplete = "Add_OnComplete"}:Ajax.BeginFormリダイレクトアクションページ(MVC 4)

ビュー:

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script> 
    <script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script> 
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script> 

    @using (Ajax.BeginForm("Create", new AjaxOptions { OnComplete = "Add_OnComplete"})) 
    { 
    <fieldset> 
     <legend>Add</legend> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.FullName) 
     </div> 
     <div class="editor-field"> 
      @Html.TextBoxFor(model => model.FullName) 
      @Html.ValidationMessageFor(model => model.FullName) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.Email) 
     </div> 
     <div class="editor-field"> 
      @Html.TextBoxFor(model => model.Email) 
      @Html.ValidationMessageFor(model => model.Email) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.PhoneNumber) 
     </div> 
     <div class="editor-field"> 
      @Html.TextBoxFor(model => model.PhoneNumber) 
      @Html.ValidationMessageFor(model => model.PhoneNumber) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.Status) 
     </div> 
     <div class="editor-field"> 
      @Html.TextBoxFor(model => model.Status) 
      @Html.ValidationMessageFor(model => model.Status) 
     </div> 

     <p> 
      <input type="submit" value="Create" /> 
     </p> 
    </fieldset> 
} 


    <script type="text/javascript"> 
     function Add_OnComplete(context) { 

      var JsonAdd = context.get_response().get_object(); 

      if (JsonAdd.Success) { 
       //TODO 
      } 

     } 
    </script> 

コントローラー

public PartialViewResult Create() 
    { 
     return PartialView(); 
    } 

    [HttpPost] 
    public JsonResult Create(Subscribe model) 
    { 
     if (ModelState.IsValid) 
     { 

      _entity.CreateSubscribe(model, SubscribeStatus.Customer.GetHashCode()); 
      var message = new Message(MailSubject, MailBody, model.Email); 

      message.Send(); 
     } 

     return Json(new 
     { 
      Success = true, 
      Message = "The person has been added!" 
     }); 
    } 

何私は間違っている?そして私は何が欠けているのですか?

ありがとうございました。

答えて

1

そのget_response()。get_object()を削除してください。

使用だけcontext.Success

+0

こんにちは、これは、アクションページに自動的にリダイレクトし、JSONの結果書き込みall.Itでjavascript関数に来ていません - {「成功」:真、「メッセージ」: "人を追加されました! "} – user541847

+2

私はここでそれをテストし、エラーを再現できました。これは、

関連する問題