2012-08-02 2 views
4

.NET에 익숙하지 않지만 viewstate에 대한 간단한 값 (1에서 1000 사이의 숫자, 특정 div의 높이)을 저장하려고합니다. 업데이트 패널이 다시로드되면 (어딘가에서 또는 자바 스크립트로 마크 업에서) 가져옵니다. 가장 간단한 방법은 무엇입니까? 나는 예를 strColor에 액세스하는 방법이나 위치에 완전히 명확하지 않다, 그러나viewstate에 값 저장 및 읽기

string strColor; 
if (Page.IsPostBack) 
{ 
    // Retrieve and display the property value. 
    strColor = (string)ViewState["color"]; 
    Response.Write(strColor); 
} 
else 
    // Save the property value. 
    ViewState["color"] = "yellow"; 

:

This page

나에게 다음 코드를 제공합니다.

코드 뒤에 있기 때문에 Response.Write 코드는 어디서 빠져 나갈 수 있습니까? 이 코드를 시도 할 때 찾을 수 없습니다. 그리고 자바 스크립트를 사용하여 그 값을 코드 뒤에 설정하는 대신 어떻게 설정합니까?

답변

6

당신은 단순히 때문에 서버 컨트롤과 DIV 설정할 수 있습니다 :

<div id="yourdiv" runat="server" ... 

그리고 페이지 게시물을

public string strColor 
{ 
    get 
    { 
     return ViewState["strColor"]; 
    } 
    set 
    { 
     ViewState["strColor"] = value; 
    } 

} 

그리고 당신은 다른 재산처럼 사용합니다 뒤로; 단순히 속성을 설정하여 높이를 설정하십시오. 예를 들면 :

yourDiv.Attributes("style","height:"+height_read_from_ViewState+"px;"); 

또는, 당신은 숨겨진 필드를 사용하여 서버 측에 숨겨진 필드의 값은 DIV의 높이를 설정하는 것을 읽고, 클라이언트 측의 높이를 저장할 수 있습니다.

<asp:hiddenfield id="hdnHeight" runat="server" /> 

당신은 너무로 자바 스크립트의 높이를 설정 : 차가운

yourDiv.Attributes("style","height:"+hdnHeight.Value+"px;"); 
+0

이것은 매우 도움이된다 - 나는이 점에서 매우 새로운 것이 유감이지만 그렇지 않다. 숨겨진 필드를 다시 게시를 통해 그 가치를 유지하는 방법을 분명히합니다. 숨겨진 필드를 만들었고 자바 스크립트로 업데이트 된 값을 유지하고 있습니다. 따라서 div 높이가 30이면 숨겨진 필드는 30이지만 다시로드 할 때 숨겨진 필드는 다시 null입니다. 내가 뭘 놓치고 있니? 편집 : - 아! 죄송합니다. 자동으로 처리됩니다. 나는 캐시 문제가 있었음에 틀림 없다. 이것은 완벽하게 작동합니다, 감사합니다! – brentonstrine

+0

당신은 아무것도 놓치지 않았습니다. 페이지가 다시로드되면 "url을 입력하고 Enter를 누르십시오"와 같이 처음으로 페이지를 방문하기 때문에 값이 재설정되는 것이 정상입니다. 다시 게시 (즉, 페이지의 버튼을 클릭하고 양식을 제출)에 대해 이야기하는 경우 ViewState가 자동으로 보존하기 때문에 숨겨진 필드의 값을 보존해야합니다. 그게 사다리 야. 너 한테 무슨 일이 일어난거야? – Icarus

+0

맞습니다 : 포스트 백 작업을 수행하는 대신 재로드 중이었기 때문에 혼란 스러웠습니다. 값을 다시로드하여 유지하려면 서버에 저장해야 할 필요가 있습니다. 지금 당장은 내 노력이 가치가 없으므로 필요한 것은 다시 게시를 통해 지속되도록하는 것이므로 지금은 고마워합니다! – brentonstrine

1

strColor를 속성으로 변경하고 viewstate를 propery의 보조 저장소로 사용합니다.

if (Page.IsPostBack) 
{ 
    // Retrieve and display the property value. 
    Response.Write(strColor); 
} 
else 
    // Save the property value. 
    strColor = "yellow"; 
+0

:

function setHeight(value) { document.getElementById('<%=hdnHeight.ClientID').value=value; } 

그리고 다시 서버 측 게시물에

. 어떻게 strColor를 'yellow'이외의 다른 것으로 설정할 수 있습니까? div의 높이로 설정하고 싶습니다. 숨겨진 텍스트 입력을 동적으로 채우면 도움이 될까요? – brentonstrine

+0

일반 변수를 사용할 수있는 곳이면 어디든 정상 변수처럼 사용할 수 있습니다. 나는 당신의 상황을 정말로 이해하지 못하기 때문에 당신의 원래 질문보다 더 많은 것을 추천하지는 않습니다. – Jeff

+0

이렇게 말해 보겠습니다. 'strColor'를'yellow '로 저장하는 대신 자바 스크립트 프롬프트가 표시 될 때 사용자가 입력하는 값으로 저장하려고합니다. 어떻게하면'strColor'를 자바 스크립트로 사용자의 응답에 설정할 수 있습니까? – brentonstrine