2012-03-18 62 views
0

我是MVC3和Razor的新手。用Razor確認並重新加載PartialView

我在母版頁上有一個「注意橫幅」,作爲部分視圖,我想通過單擊鏈接關閉橫幅(不重新加載頁面)點擊「確認」。我相信我需要使用jQuery和Ajax調用,但我似乎無法找到合適的組合。

這裏是我的_Layout.cshtml的一部分:

<section id="main"> 
    <span id="attentionBar">@{ Html.RenderPartial("_AttentionBarPartial"); }</span> 
    @RenderBody() 
</section> 

這是我的局部視圖(只使用會話作爲快捷方式現在得到它的工作)。我不知道用什麼來作爲「鏈接」來重新加載視圖:

@{ this.Layout = null;} 
    @if(! String.IsNullOrWhiteSpace(@Session["Attention"].ToString())) 
    {  
     <div class="attentionPanel"> 
      <span class="attentionLabel">Attention</span> 
      @Session["Attention"].ToString() 
      <span class="attentionLabel"> 
@* WHAT DO I PUT HERE *@ 
       @Ajax.ActionLink("X", "AcknowledgeAttentionBar", "Home", new AjaxOptions{ UpdateTargetId="attentionPanel", InsertionMode=InsertionMode.Replace }) 
      </span>    
     </div> 
    } 

這是我的家庭控制器。再次,我不確定代碼是否正確,但基本上我會清除顯示注意橫幅的條件。

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     ViewBag.Message = "Home Controller Updated At " + DateTime.Now.ToLongDateString() 
      + " " + DateTime.Now.ToLongTimeString(); 

     return View(); 
    } 

    public PartialViewResult AcknowledgeAttentionBar() 
    { 
     Session["Attention"] = String.Empty; 
     return PartialView("_AttentionBarPartial"); 
    } 
} 
+0

我還沒有看到您的設計。但是,注意橫幅很少是一個好的設計組件。 – 2012-03-18 03:36:47

回答

1

兩件事:

  1. 確保你已經包括了jquery.unobtrusive-ajax.js腳本,以便您的頁面Ajax.ActionLink助手工作,併發送一個AJAX請求被點擊,而不是一個正常的重定向的鏈接時, :

    <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script> 
    
  2. 在你AjaxOptions已指定UpdateTargetId="attentionPanel"但沒有元素i n你的標記id="attentionPanel"。你有一個class="attentionPanel"的div,但這不是一回事。另一方面,您已將您的橫幅包裝在<span id="attentionBar">中,因此您的意思可能是UpdateTargetId="attentionBar"

+0

謝謝 - 做到了。 #1是我錯過的重大事情,#2只是我擔心太大的局面和缺少簡單的細節。 – 2012-03-18 15:13:04