2011-11-22 24 views
1

在工作中,我一直負責爲現有的MVC 3/Razor項目添加附加功能。我之前沒有使用MVC,但對Web Forms非常熟悉。MVC 3 Razor - 基於EF查詢顯示模態

但是,我不太確定在哪裏放置我需要的一切。

當應用程序第一次加載時,會出現登錄頁面。當用戶成功登錄時,用戶將看到一個儀表板類型頁面。

新功能是檢測用戶是否具有Due Date < Now的FollowUpItems。如果Count > 0然後顯示一個Modal彈出式窗口,其中包含一些文本和一個鏈接到'View Followup Items'的鏈接。

已經有一個控制器和操作用於查看後續項目。我需要顯示模態,並且我想使模態成爲可重用類型的對象 - 我假設/想出一個PartialView,我可以在其中傳遞Controller,Action,Params的名稱以顯示可能的ActionLink,我將顯示在模式彈出框中,以及消息文本等。

我需要一點關於如何打開模式的指導,因爲它沒有附加到點擊,而是表達式是否評估爲真或假,以及在哪裏最好的地方是件。

預先感謝指導

+1

你有這個項目的jQuery? –

+0

是的,我喜歡。我可以添加任何我想添加的內容。 – TheGeekYouNeed

回答

1

如果用戶在加載儀表盤頁面的動作已經FollowUpItems我將檢測,並存儲在ViewBag信息。例如,

public ActionResult Dashboard() 
{ 
    ViewBag.HasFollowupItems = UserHasFollowupItems(); 
    return View(); 
} 

在這個例子中,UserHasFollowupItems()返回一個字符串,類似「真」假」。

在儀表板視圖中,添加一個空div到其中的模態數據將被加載

<div id="followup_items"></div> 

然後在限定的模態,並確定相同的視圖中添加的document.ready()如果​​模態應加載:

$(document).ready(function() 
{ 
    // define modal 
    $("#followup_items").dialog({ 
     autoOpen: false, 
     height: 'auto', 
     width: 825, 
     title: 'Followup Items', 
     position: [75, 75], 
     modal: true, 
     draggable: true, 
     closeOnEscape: true, 
     buttons: { 
      'Close': function() 
      { 
       $(this).dialog('close'); 
      } 
     }, 
     close: function() 
     {    
      $('.ui-widget-content').removeClass('ui-state-error'); 
     },   
    }); 

    if(@ViewBag.HasFollowupItems == 'true') 
    { 
     $('#followup_items').load("/FollowupItems/Load", function (data, txtStatus, XMLHttpRequest) 
     { 
      $('#followup_items').dialog('open'); 
     } 
    }); 
}); 

在這個例子中/FollowupItems/Load是URL到適當的控制器/動作,對於該視圖生成的數據。你是對的,這個視圖是一個局部視圖,加載到頁面上的空的followup_items div中。

因此,您可以在視圖中的任何位置使用@ViewBag對象,在這種情況下傳遞布爾值,指示是否應該加載/打開模式。我還沒有找到在外部JavaScript文件中使用ViewBag的方法,所以我通常在我的視圖中使用嵌入式腳本標記,因此我可以使用ViewBag。

您也可以以相同的方式(/FollowupItems/Load/@ViewBag.Userid)或後續操作需要的任何其他數據添加用戶標識。

+0

非常感謝您的跟蹤。當我回家時我會看這個。在我看來很好。 :) – TheGeekYouNeed