1

私はこれに対する答えを見つけようとしましたが、望ましい結果が得られなかったいくつかのことに出くわしました。

そこで、(ファンシーボックスの)iFrameにロードするHTMLヘルパーを作成しました。
<%= Html.ActionFrame("Projects", "Edit") %>

結果のページには、現在データを保存し、iFrame内のインデックスページにリダイレクトする保存ボタンがあります。アクションが進むにつれて:

        if (ModelState.IsValid)
        {
            projectRepository.saveProject(record);
            return RedirectToAction("Index");
        }

しかし、私ができるようにしたいのは、保存をクリックすると、データを保存するだけでなく、iFrameも閉じるということです。

私はこれに出くわしました。これは、iFrameで実行できるようにしたいことと似ています。これにより、現在のアクションの変換が簡単になります。

前もって感謝します!

4

3 に答える 3

1

了解しました。これを取得したと思います。SharedディレクトリにCloseというビューを作成しましたが、その内容は次のとおりです。

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Close</title>
</head>
<body>
    <div>
        <script type="text/javascript">
            parent.$.fn.fancybox.close();
            parent.location.reload(true);
        </script>
    </div>
</body>
</html>

そして、アクションで私はただ行きreturn View("Close");ます。iFrameを閉じ、iFrameを呼び出すページを更新します。

于 2009-12-23T22:34:11.040 に答える
1

CloseActionMethodを返すことが最善の策だと思います。ActionMethodからJavaScriptの結果を返すことができますが、その場合、ビューではなくActionMethodでhtml / javascriptがどのように動作するかを定義します(これは特に好きではありません)。

あなたと同じ別の解決策は...

<script type="text/javascript">
    if (window.parent != null)
        window.parent.location = '<%= Url.RouteUrl(new { 
            controller = "YourContoller",
            action = "YourAction" }) %>';
    else
        window.location = '<%= Url.RouteUrl(new { 
            controller = "YourController",
            action = "YourAction" }) %>';
</script>

その後、親ページをリロードするだけでなく、コントローラー/アクションに具体的にリダイレクトできます。または、リダイレクト先のルートを決定するパラメータ/モデルを返すこともできます。

于 2009-12-24T00:16:02.030 に答える
0

jquery.postを使用して、iframeからアクションを呼び出すことができます。

次に、.postメソッドからのコールバックを使用してiframeを非表示にします。

$.post('/MyController/MyAction',
  { param1: $('field1'), param2: $('field2') }, 
  function(data) {
  if (data) {
    $("#myIFrame").fadeout();
  }
}
于 2009-12-23T21:14:41.450 に答える