2011-07-04 3 views
2

私はタブがあるダイアログボックスを持っています。いずれかのタブには、ユーザーが入力したアドレスが表示されます。ユーザーが新しい住所を追加できるボタンもあります。ユーザーがボタンをクリックすると、現在のタブの内容が「追加」ビューに置き換えられます。Ajax.BeginFormは何をする予定ですか?

私がここで達成しようとしているのは、ユーザーがアドレスを追加できるようにすることです.OKをクリックすると、フォームはAJAX呼び出しを介して送信され、タブは「インデックス」ビュー(ユーザーのアドレスを表示)

残念ながら、それは正しく動作していません。 AJAX呼び出しでフォームを送信するのではなく、定期的なポストアクションを実行し、タブに表示するのではなく、インデックスビューを白い背景に表示します。

は、ここに私のコードです:

[HttpPost] 
    public ActionResult Add(AddressDto model) 
    { 
     if(!ModelState.IsValid) 
     { 
      return PartialView(model); 
     } 
     Area area = null; 
     if(!string.IsNullOrEmpty(model.Area)) 
     { 
      area = _addressService.GetAreaByName(model.Area); 
     } 
     var newAdd = new Address 
         { 
          Details = model.Details, 
          Name = model.Name, 
          IsDefaultAddress = false, 
          CountryName = _addressService.GetCountryById(int.Parse(model.Country)).Name, 
          User = _helper.GetUserFromSession(HttpContext.User.Identity.Name) 
         }; 
     if(area != null) 
      area.Addresses.Add(newAdd); 
     else 
      _addressService.Create(newAdd); 
     _unitOfWork.Commit(); 
     var indexViewModel = PrepareIndexView(); 
     return PartialView("Index", indexViewModel); 
    } 

    private UserLocationViewModel PrepareIndexView() 
    { 
     var nickname = this.HttpContext.User.Identity.Name; 
     var user = _helper.GetUserFromSession(nickname, true); 
     var viewModel = Mapper.Map<User, UserLocationViewModel>(user); 
     return viewModel; 
    } 

そして、ここで私は、フォーム始めている方法は次のとおりです。

@using (Ajax.BeginForm("Add", "Address", new AjaxOptions { UpdateTargetId = "ui-tabs-2", InsertionMode = InsertionMode.Replace, HttpMethod = "POST" })) 

は、だから私の設定が間違って何を?

答えて

5

はあなたのページに次のスクリプトが含まれていることを確認してください:

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

ディミトロフ:ありがとうございます。それがそれでした。 – Kassem

関連する問題