2012-03-15 32 views
0

こんにちは誰かが、私が_Layout.cshtmlにある準備したdivコンテナにPartialViewをロードする方法を教えてください。 。私はそれは、次のアクションリンクのクリック時にコンテナにロードします:_Layout.cshtmlでコンテナに部分的なビューをロードする方法

<a href="@Url.Action("RenderColorbox", "ContactPartial", new { path = "_ContactPartial" })" class="colorboxLink"><span>ContactUs</span></a> 

私は私のコントローラでモデルを作成し、PartialViewにそれを渡す必要があると私はいけないので、私はjavascriptをせずにこれを実行したいと思います厳密に型指定されたモデルをjavascriptを使ってビューに渡すことが可能だと考えています。

私は、私が使用することができますしたい場合:私はできることを...その重要を

$('.colorboxLink').click(function() { 
    $('.colorbox_container').load(this.href); 
}); 

が、私は、これは私の部分図に強く型付けされたモデルを作成し、合格する機会を与えるものではありません述べたように作成し、ビューにモデルを渡すため、Imは部分ビューでforeach(Model.ItemListのvarアイテム)のようなものを試してみるとnull参照例外が発生するためです。

は、相続人は私のコントローラがどのように見えるか:

public virtual ActionResult RenderColorbox(string path) 
    { 
     return PartialView(path, null); 
    } 

しかし、現在は、アクションリンクをクリックするだけではなく、私が設定したコンテナ内よりも、新しい空白のページにPartialViewをレンダリングします。

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

EDIT:提案として、私は次のように使用するカラーボックスロードするには:

$('.colorboxLink').click(function() { 
    $('.colorbox_container').load(this.href, function() { 
     var colorboxOptions = { 
      inline: true, 
      scrolling: false, 
      opacity: ".9", 
      fixed: true, 
      onLoad: function() { 
       $('#cboxContent').css({ 
        "background": "white" 
       }); 
       $('#cboxLoadedContent').css({ 
        "margin-bottom": "28px", 
        "height": "558px" 
       }); 
      } 
     } 
     $('#contactColorbox').colorbox(colorboxOptions); 


    }); 

をしかし、まだカラーボックスなしではなく、モーダルポップアップとしてロードします。

答えて

0

しかし、これは私には、部分的なビューに強く型付けされたモデル を作成して渡す機会を与えるものではありません。

これはあなたにチャンスを与えます。あなたはAJAXリクエストをContactPartialコントローラのRenderColorboxアクションに送信しています。また、あなたは、クリックハンドラからfalseを返すことにより、リンクのデフォルトのアクションをキャンセルしていることを確認してください

public ActionResult RenderColorbox(string path) 
{ 
    SomeComplexModel model = ... 
    return PartialView(path, model); 
} 

$(function() { 
    $('.colorboxLink').click(function() { 
     $('.colorbox_container').load(this.href); 
     return false; 
    }); 
}); 
をこのアクション内には、準備して、部分的に好きな複雑なビューモデルを送信することができます

これをしないと、リンクをクリックすると、AJAXの呼び出しはブラウザが目的のページにリダイレクトされる前にほとんど実行されません。

+0

上記のようにjavascript load()を使用していたのであれば、actionlinkではonclick = "false"と設定します。それ以外の場合は、空白の新しいページに部分ビューをロードするだけです。その場合、onclick = "false"ならRenderColorbox()は呼び出されません。 – parliament

+0

は魅力的に働いた。どうもありがとう! – parliament

+0

@ user1267778なぜ、あなたのアンカーにあなたのjavascriptですでに購読しているときにonclick属性を追加するのですか?また正しいのは 'onclick =" false false; "' onclick = "false" 'ではなく' 'です。しかし、これをしないでください。マークアップとjavascriptを混在させないでください。 –

関連する問題