2012-01-12 4 views
0

メインウィンドウでクリックしたレコードの詳細を編集するためにポップアップに表示される部分ビューを使用しています。このビューでは、ユーザーは編集、削除またはキャンセルを行うことができます。ディテール・レコードが正常に編集または削除されると、部分ビューを閉じてメイン・ウィンドウを更新する必要があります。今、削除すると、私のメインビューがポップアップで再読み込み中です。ポップアップで開いた部分表示を閉じてメインページを更新するにはどうしたらいいですか?

これを動作させる助けがあれば、大歓迎です。

HTML:ここ

`<a href="javascript:popup('@Url.Action("EditCaseEmployer/" + item.Id, "CaseOptions")')">@item.StartDate.ToShortDateString()</a>` 

関数は、ウィンドウをポップアップするJavaScriptのカスタムです:

function popup(url) { 
window.open(url, 'notes', 'width=900,height=600,scrollbars=yes,resizable=yes,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); 
} 
function popup(url, windowName) { 
window.open(url, windowName, 'width=900,height=600,scrollbars=yes,resizable=yes,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); 
} 
+0

あなたは、ポップアップを開くには、 'window.open'を使用しています? –

+0

これは私がこれを取った時のコードです。必要に応じて変更することができます。 @item.StartDate.ToShortDateString() TheGeekYouNeed

+0

'ポップアップ 'とは何ですか?私はそのような機能が存在することを知らなかった。カスタムメイドですか?もしそうなら、それはどのように見えるのですか? –

答えて

0

あなたはあなたの部分に使用しているビューモデルにブール型プロパティを追加することができます。

public class MyViewModel 
{ 
    public MyViewModel() 
    { 
     ShouldReload = false; 
    } 
    public bool ShouldReload { get; set; } 

    // Some properties 
    public string Foo { get; set; } 
} 

そして部分的にその値をテストし、オープナーをリフレッシュして閉じる彼はポップアップ:今、すべてのことが残って

@model MyViewModel 

@if (Model.ShouldReload) 
{ 
    <script type="text/javascript"> 
     // refresh the parent window 
     window.opener.location.reload(); 

     // close the popup 
     window.close(); 
    </script> 
} 
else 
{ 
    using (Html.BeginForm()) 
    { 
     @Html.LabelFor(x => x.Foo) 
     @Html.EditorFor(x => x.Foo) 
     <button type="submit">OK</button> 
    } 
} 

は、それぞれその部分およびプロセスを表示するために使用される2コントローラのアクションは、次のとおりです。

public ActionResult Dialog() 
{ 
    var model = new MyViewModel(); 
    return PartialView(model); 
} 

[HttpPost] 
public ActionResult Dialog(MyViewModel model) 
{ 
    if (!ModelState.IsValid) 
    { 
     // the model is invalid => redisplay the partial 
     return PartialView(model); 
    } 
    // TODO: at this stage the model is valid 
    // => pass it to the service layer for processing 

    // everything went fine => set the ShouldReload flag to true 
    // so that the view refreshes its opener and closes itself 
    model.ShouldReload = true; 
    return PartialView(model); 
} 
関連する問題