2012-03-12 3 views
0

아래 aspx 페이지에 숨겨진 변수가 있습니다.asp.net에서 html 속성 읽기

버튼의 클릭에
<input type="hidden" value="" runat="server" id="homeExcelData" filename=""/> 

, 스피) (A에게 form.Sumbit을하고;

제출하기 전에 다음과 같이 숨겨진 컨트롤의 속성을 설정합니다. 코드 뒤에

document.getElementById("homeExcelData").attributes["filename"] = "test.xls"; 
          $("#homeExcelData").attr("filename","test.xls"); 
          $("#homeExcelData").prop("filename","test.xls"); 
          alert($("#homeExcelData").attr("filename")); 
          $("#homeExcelData").val(excelData); 

은 다시 게시하는 동안, 나는 자바 스크립트 설정 homeExcelData.Value하여 excelData를 얻을 수 있습니다.

그러나 "filename"속성의 값은 "test.xls"대신 빈 문자열 (null이 아님)로 제공됩니다.

제발 도와주세요.

서버 측 코드 : 나를 위해

string fileName = homeExcelData.Attributes["filename"] ?? "report.xls"; 
+0

값은 때 postpack을 잃게됩니다. 따라서 ViewState에서 값을 유지해야합니다. – sinanakyazici

답변

1

위의 작품. 나는 무슨 일이 일어나고 것은 값이 어떻게 든 다시 초기화지고 당신의 제출 버튼을 다시 게시 (속성을 추가하는 자바 스크립트는 서버 측에 두 번 이동로드 나를 위해 작동) 당신이 생각하는 이유는 무엇

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     // Set attribute on page Load 
     homeExcelData.Attributes.Add("filename","test.xls"); 
    } 
} 

protected void btnCheckValues_Click(object sender, EventArgs e) 
{ 
    Response.Write(homeExcelData.Attributes["filename"].ToString()); 

} 
+1

코드 숨김으로 추가하는 경우 제대로 작동합니다. 우리가 자바 스크립트에 추가하고 button_click 대신 from.Sumbit()을 수행하면 문제가 발생합니다. – Raghav

+1

attibute 및 value 클라이언트 측을 추가하면 페이지에 렌더링되지 않아 비어있게 될 수도 있습니다. –

2

을 것으로 생각 파일 이름 속성 값은 서버에 대한 POST 요청의 일부 여야합니까?

내가 또 다른 숨겨진 필드 "homeExcelDataFileName"가 그 값을 사용 (당신이 그것을 서버 측을 설정할 경우에만 viewstate가 값의 일부가 될 것입니다). 이 도움이 될 것입니다

희망은

+0

그게 전부입니다. 그러나 form.Submit()이 완료되면 뷰 상태가 aspx 페이지에서 새로 고쳐지고 재구성되어 서버에 다시 제출됩니다. js를 통해 컨트롤에 값을 추가하면 control.Value로 서버에옵니다. 즉, 특정 HTML 속성의 경우 viewstate가 정상적으로 재구성됩니다. 그러나 사용자 정의 HTML 속성의 경우 viewstate는 새로 고쳐지지 않습니다. 그래서 기본적으로 asp.net 사용자 지정 특성을 읽고 컨트롤의 viewstate에 팩을 만들려면 몇 가지 트릭이 필요합니다. 그러면 서버에 자동으로 연결됩니다. – Raghav

+0

파일 이름뿐만 아니라 몇 가지 사용자 지정 특성을 추가해야합니다. 내가 복잡한 JSON 위트 이러한 속성을 재치로 내 가치를 recontruct 할 수 있습니다. – Raghav

+0

viewstate를 수정하거나 클라이언트 쪽을 재구성해서는 안됩니다. 지금까지 내가 아는 한 submit()은 게시물 요청을 내기 전에 뷰 상태를 변경하지 않습니다. ViewStateMac이이를 확인하는 데 도움이됩니다 ("잘못된 ViewState"). 일부 js를 사용하여 일부 숨겨진 필드에서 데이터를 수집하고 인코딩하고 "압축"할 수 있습니다.이 값은 서버 기능을 해독하여 제어 기능을 변경합니다. – jbl