2014-07-06 4 views
0

저는 ASP.NET Web Page 3과 JQuery 2.1을 사용하고 있습니다.다른 페이지로 데이터를 보내고 다른 페이지로 리디렉션하는 방법은 무엇입니까?

나는 웹 페이지 Input.cshtml을 가지고 있으며, 모두 html로, 서버 측 코드는 없다. 나는 또한 ShowTable.cshtml이라는 페이지를 가지고 있고 그것 모두는 html로, 서버 사이드 코드는 없다. 마지막으로 JQuery를 사용하여 테이블을 채우는 LoadTable.cshtml (모든 서버 측 코드)이라는 페이지가 있습니다.

내가 원하는 것은 Input.cshtml에서 입력을 가져 와서 LoadTable.cshtml에 전달한 다음 LoadTable.cshtml에서 결과 데이터를 ShowTable.cshtml에 전달하도록하는 것입니다. 내 모든 포스트 백과 아약스는 JQuery를 통해 수행된다. 다른 말로하면, 한 웹 페이지의 입력을 서버 쪽 페이지로 전달하고 해당 서버 쪽 페이지에서 결과 데이터를 다른 웹 페이지로 보내도록하고 싶습니다.

나는 대부분이 작업을 수행했습니다. 내가 당황하게하는 유일한 부분은 서버 측 페이지가 결과 데이터를 다른 웹 페이지로 보내도록하는 것입니다.

답변

0

문제는 웹의 상속 무국적이지만, 사용할 수있는 몇 가지 옵션이 있습니다 : 데이터를 공유 할 수있는 경우

Http Cache: 

나는 HTTP 캐시를 고려하는 모든 사용자간에 그것을

를 저장하려면
SessionState: 

SessionState의 값을 원본 페이지에 저장하고 이후 페이지에서 다시 참조하십시오. 이는 데이터가 사용자에게 특정한 시나리오에서 일반적인 옵션입니다.

Html5 local storage: 

클라이언트의 로컬 저장소에 값을 저장하십시오. 많은 양의 데이터를 클라이언트에 전송해야하므로이 옵션은 좋지 않습니다. 유사점은 비슷한 API를 사용하지만 현재 브라우저 세션에서만 유효합니다 세션 저장소입니다.

Url: 

url의 쿼리 문자열에 데이터를 전달하십시오. 이것은 POST 요청의 POST 데이터를 통해 다른 페이지에 게시 할 수있는 URL에 데이터를 전달의 한계를 해결하기 위해서는 최대 URL 크기 등

Post Request: 

에 의한 제한이 있습니다.

+0

숨겨진 필드를 사용하는 방법이 있습니까? – dotnetN00b

+0

숨겨진 필드는 단일 페이지에 고유하지만 숨겨진 필드에 값을 저장하고 값을 서버에 게시하는 것이 좋습니다. – TGH

0

페이지 1의 데이터베이스 (MySQL, MongoDB 등)에 항목을 저장하는 것과 같은 사운드가 들립니다. DB에 일단 페이지 2 또는 페이지 3에서 $.ajax 또는 $.get을 사용하여 항목에 액세스 할 수 있습니다 개인적으로 말하자면, 나는 3 페이지의 상호 작용이 필요할 때 항상 데이터베이스를 사용합니다.

@TGH가 제안한대로 클라이언트 컴퓨터에 저장된 세션 데이터와 비슷한 3 페이지 상호 작용을 할 수 있습니다. 그러나이 경로를 사용하면 (그리고로드해야하는 정보로 무엇을하는지에 따라) 값을 게시해야하므로 장기 사용자 입력을이 방법으로 저장할 때 지칠 것입니다. 귀하의 서버 페이지는 귀하의 페이지 3 (즉, 직접 게시물 정보를받지 못한 페이지)에 도달했을 때 여전히 클라이언트의 호스트 컴퓨터에서 읽어야합니다.

당신이 세션 스토리지를 사용한다면 당신이 (당신이 예를 들어, jQuery를 쿠키를 사용하도록 선택하는 경우) 쿠키의 유효 기간을 제한하고, 당신이 당신의 옵션으로 localStorage을 선택 그래서 만약 localStorage 항목에는 유효 기간이없는 것을 기억하실 수 있습니다 당신이 그들을 파괴 해야하는 경우 null 항목을 설정할 수 있습니다.

+0

필요한 데이터를 생성 할 수 있도록 서버 측 스크립트로 전달 된 입력을 지속시킬 필요가 없습니다. – dotnetN00b

+0

@ dotnetN00b는이 경우 세션 저장소와 함께 가고 싶어 할 수 있습니다. 데이터 만료 후 항목 만료 또는 null로 설정 – DrewT

+0

또는 1 페이지의 제출 기능에서 2 개의 게시물 요청을 수행 할 수 있습니다. 2 페이지에 게시 한 다음 3 페이지에 다시 게시하십시오. – DrewT

0

출력을 표시하는 데 세 번째 페이지를 사용하려는 이유가 실제로 이해가되지 않습니다.

Input.cshtml에서 LoadTable.cshtml으로 데이터를 게시하면 Input.cshtml에 응답하고 ShowTable에 응답을 전송하는 방법을 찾아야합니다. 입력 및 표시 데이터에 대해 단일 페이지를 사용하지 마십시오. 중요하지 않은 부분을 숨기십시오.

LoadTable.cshtml

@using System.Text; 

@{ 
    if(IsPost){ 
     var db = Database.Open("MyDb"); 
     var sql = "INSERT INTO Temp (FirstName, LastName) VALUES (@0, @1)"; 
     var FirstName = Request["FirstName"]; 
     var LastName = Request["LastName"]; 
     db.Execute(sql, FirstName, LastName); 

     var data = db.Query("SELECT * FROM Temp"); 
     StringBuilder html = new StringBuilder(); 
     html.Append("<table>"); 
     html.Append("<tr><th>id</th><th>First Name</th><th>Last Name</th></tr>"); 
     foreach(var row in data){ 
      html.Append("<tr><td>" + row.id + "</td><td>" + row.FirstName + 
        "</td><td>" + row.LastName + "</td>"); 
     } 
     html.Append("</table>"); 

     Response.Write(html.ToString()); 
    } 
} 
: 나는 게시물에만 아이디, 이름 및 성 필드가있는 테이블 온도 데이터 및 테이블의 내용을 표시하는 간단한 응용 프로그램을 시뮬레이션 한 다음 코드에서

Input.cshtml는

<!DOCTYPE html> 

<html lang="en"> 
    <head> 
     <meta charset="utf-8" /> 
     <title></title> 
     <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
    </head> 
    <body> 
     <div id="form"> 
      <form method="post" id="myForm" action="~/LoadTable.cshtml"> 
       FirstName: <input type="text" name="FirstName" /><br /> 
       LastName: <input type="text" name="LastName" /><br /> 
      </form> 
      <button onclick="GetHtml()">Display</button> 
     </div> 
     <div id="display"> 
      <button onclick="GetForm()">Input</button> 
     </div> 
    </body> 
</html> 

<script> 
    $(function() { 
     GetForm(); 
    }); 

    function GetHtml() { 
     $.ajax({ 
      type: "POST", 
      url: $("#myForm").attr('action'), 
      data: $("#myForm").serialize(), 
      dataType: "html", 
      success: function (data) { 
       document.getElementById('display').innerHTML = "<button onclick='GetForm()'>Input</button>"; 
       $("#display").prepend(data); 
       $("#form").hide(); 
       $("#display").show(); 
      } 
     }); 
    } 

    function GetForm() { 
     $("input:text").val(""); 
     $("#display").hide(); 
     $("#form").show(); 
    } 
</script> 

나는 그것이 도움이되기를 바랍니다.

관련 문제