2011-12-15 37 views
0

快速但愚蠢的問題。這種級聯有點兒。如果我在aspx頁面上創建一個變量,它是否可用於我的aspx部分呈現的ascx。另外,aspx頁面如何處理這些變量?我知道一個事實,那些變量比說TempData或ViewData變量的持續時間要長得多。下面是我想知道的一個小例子MVC上的變量生命週期頁面

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 
<h3><% Response.Write(((ViewData["MESSAGE"] == null) ? "Edit Encounter Information" : ViewData["MESSAGE"]));    
     int encounter = int.Parse((string)TempData["ENCOUNTID"]); 
     int PopPatId = int.Parse((string)TempData["POPPATID"]); 
     int PatID = int.Parse((string)TempData["PATID"]); 
     int population = (int)TempData["POPULATIONID"]; 
     string templates1 = (string)TempData["TEMPLATES"]; 
     string MRN = ((TempData["MRN"] == null) ? "Add Patient":(string)TempData["MRN"]); 
     ViewData["TEMPLATES"] = templates1;   
    %>   
    </h3> 
    <div id="countdownDiv" style="display:none"> 
    <p><font color="#990000"><b>Sorry, This Data has expired. Please Refresh The page.</b></font></p>  
    <% 
     Html.BeginForm("EditTemplate", "PatientACO", new { Template = PatID, popID = population, PopulationPatID = PopPatId, Enc = encounter }); 
     TempData["TEMPLATES"] = templates1; 
     %><input type="submit" value="Refresh" id="test" /><% 
     Html.EndForm();%>  
</div> 
<% Html.RenderPartial("_EditTemplate"); %> 
<%: Html.ActionLink("Back", "TemplateInfo", new { PopulationID = population, ActiveAll = "1" })%> 

注意我已經創建的變量。他們會持續多久?我現在可以在下面的ascx頁面中使用這些變量嗎?

+1

這是今天我見過的最糟糕的代碼。你應該把所有的邏輯移動到你的控制器或者視圖模型中(取決於邏輯的作用) – jgauffin 2011-12-15 15:17:07

回答

1

這些變量只能在aspx頁面的範圍內使用。通過RenderPartialRenderAction呈現的任何頁面都需要定義要使用的自己的一組變量。如果您需要在aspx頁面和ascx頁面之間共享數據,那麼您需要將模型或ViewData轉換爲RenderPartial視圖並以這種方式訪問​​數據。

0

您也可以通過模型的局部視圖<%:部分(「PartialViewName」,模型)%>