2011-12-15 4 views
0

빠르지 만 바보 같은 질문입니다. 그런 종류의 폭포가 조금 있습니다. aspx 페이지에서 변수를 만들면 ascx에서 aspx가 부분적으로 렌더링된다는 것을 알 수 있습니다. 또한, 어떻게 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

+0

뷰의 모양을 조작하기 위해 많은 코드가 사용됩니다. 나는 그 모든 것을 컨트롤러에 전달할 수 있다고 생각하지만, 여전히 어떻게 든 결과를 뷰에 전달해야 할 것입니다. 논리가 사용되는 관점에 있다면 이해하기가 더 쉬울 것이라고 생각했습니다. 보기 모델이 M-V-VM ish가 아닌가요? – SoftwareSavant

+0

'Model \'폴더는 뷰 모델 용입니다. 보기 모델을 사용하여보기에서 논리를 제거해야합니다. '((TempData [ "MRN"] == null) "Add Patient":(문자열) TempData [ "MRN"])'은 뷰 모델에서 MrnText라는 속성에 속합니다. – jgauffin

답변

1

이러한 변수는 aspx 페이지의 범위 내에서만 사용할 수 있습니다. RenderPartial 또는 RenderAction을 통해 렌더링 된 페이지는 사용할 변수 세트를 정의해야합니다. aspx 페이지와 ascx 페이지간에 데이터를 공유해야하는 경우 RenderPartial보기에 ViewData 모델을 전달하고 해당 방식으로 데이터에 액세스해야합니다.

0

또한 부분적인 전망에 <%을 모델을 전달할 수 있습니다 : 오늘 본 것 중 최악의 코드의 부분 ("PartialViewName", 모델) %>