2012-04-12 22 views
2

JQuery UIダイアログボックスで部分的な表示をレンダリングしています。例はLoading a partial view in jquery.dialogから取られます。部分的なモデルをモデルに渡すと、クローズボタンは機能しません...誰かがダイアログボックスを閉じるためのソリューションを持っていますか? (モデルが部分ビューに渡されていない場合は正常に動作します)。また、誰もビューモデルを渡すときに動作しない理由を説明することはできますか?モデルを使用して部分的な表示をレンダリングするときにJQuery UIダイアログを閉じる方法

ビュー:

<script type="text/javascript"> 
    $(function() {  
     $('#dialog').dialog({    
      width: 400,    
      resizable: false, 
      title: 'hi there', 
      modal: true, 
      open: function(event, ui) { 
       //Load the CreateAlbumPartial action which will return 
       // the partial view _CreateAlbumPartial 
       $(this).load("@Url.Action("CreateAlbumPartial")"); 
      }, 
      buttons: { 
       "Close": function() { 
        $(this).dialog("close"); 
       } 
      } 
     });     
    }); 
</script> 

<div id="dialog" title="Create Album" style="overflow: hidden;"></div> 

処置:

public ActionResult CreateAlbumPartial() 
     {     
     var applications = new List<string>{"bob", "john", "andrew"};   
     var selectList = applications.Select(x => new SelectListItem{Text = x,Value = x}).ToList(); 
     var model = new TestModel{Applications = selectList}; 
     return View("_CreateAlbumPartial", model); 
     } 

のViewModel:

public class TestModel 
    {  
     public int SelectedApplicationId; 
     public IEnumerable<SelectListItem> Applications; 
    } 

部分図:

@model MvcApplication1.Models.TestModel 

<div> 

@Html.DropDownListFor(
     x => x.SelectedApplicationId, 
     new SelectList(Model.Applications, "Value", "Text"), 
     "-- Select Application --", 
      new 
      { 
       id = "ApplicationsDropdownList", 
       data_url = Url.Action("ViewRolesForApplication", "Index") 
      } 
    ) 
</div> 
+0

wogglesを作成するには、この記事をチェックアウト:http://ricardocovo.com/2011/04/03/asp-mvc3-editing-records-with-jqueryui-dialogs-and -ajaxforms /、それはあなたが探しているものを正確に説明します。 - 元々aspxには、しかし、剃刀のバージョンがあります。 – covo

+0

@covo素晴らしい投稿...私は現在のコードで動作させるためにかなりの変更を加える必要があります。それがどのように機能するかをお知らせします。 – woggles

+0

@covo Iveはあなたのブログの投稿に続き、簡単な編集シナリオでうまくいきます。しかし、私の場合、私のダイアログにはドロップダウンリストが必要で、何かが選択されたときにチェックボックスリストを使って別の部分ビューをレンダリングします。この場合、クローズボタンは再び機能しません。おそらく、より複雑なフォーム(部分的なビューを含む可能性のあるもの)のための洗練されたソリューションがありますか? – woggles

答えて

1

最初のロードコンテンツは、その後、ダイアログ

$(function() {  
     $.ajax({ 
      url: "@Url.Action("CreateAlbumPartial")", 
      success:function(data){ 
        $('#dialog').html(data).dialog({    
         width: 400,    
         resizable: false, 
         title: 'hi there', 
         modal: true, 
         buttons: { 
          "Close": function() { 
          $(this).dialog("close"); 
          } 
         } 
        }); 
      } 
     }); 

    }); 
関連する問題