2010-12-02 1 views
1

에 성공적으로 저장된 데이터 후, 다른 페이지에 알림을 표시 .aspx, 나는 당신이 send를 치면, 메시지 상자 div에 "Item to list"라는 메시지가있는 List.aspx로 돌아 가게 할 것이다.ASP.NET :</p> <p>의 내가 AddToList에 폼이 있다고 가정 해 봅시다 .. 내가 웹을 검색하지만,이 질문에 대한 정말 좋은 답을 발견하지 않았습니다 데이터베이스

List.aspx? msg = 내 메시지를 보내야합니까, 아니면 다른 좋은 방법이 있습니까?

그래서 난이 헬퍼 클래스 제작 :

public class MessageHelper : System.Web.UI.MasterPage 
    { 
     public void SetMessage(String message) 
     { 
      Session["Message"] = message; 
     } 

     public string GetMessage() 
     { 
      if (String.IsNullOrEmpty(Session["Message"])) 
      { 
       String temp = Session["Message"]; 
       Session["Message"] = ""; 
       return temp; 
      } 
      else 
      { 
       return ""; 
      } 
     } 
    } 

을이 오류 가지고 :

Error 32 The best overloaded method match for 'string.IsNullOrEmpty(string)' has some invalid arguments 
Error 33 Argument '1': cannot convert from 'object' to 'string' 
Error 34 Cannot implicitly convert type 'object' to 'string'. An explicit conversion exists (are you missing a cast?) 
+0

낫토 - 시도 다음 번에 당신의 질문을 그렇게 크게 바꿀 수는 없습니다. 당신은 그 의미를 완전히 바꿔 새로 편집 된 질문에 대한 대답을 거의 무의미하게 만들었습니다. 전송 오류에 대한 또 다른 질문을 열어야합니다. 감사! –

답변

0

확실히 쿼리 문자열을 사용하여 List.aspx 페이지로 데이터를 전달할 수 있지만 HTML로 작성하려는 텍스트를 전달할 때는주의해야합니다. XSS 공격으로부터 보호해야합니다.

이렇게하는 데는 몇 가지 다른 방법이 있습니다. 응용 프로그램에서 사용자를 다른 페이지로 리디렉션하려는 여러 위치가 있지만 이전 페이지에서 수행 한 작업과 관련이있는 메시지를 표시 할 수도 있습니다 (항목을 저장하고, 항목 등). 이 특정 사례에 대한 일회성 정책이 아니라 전체적인 계획을 세우는 것이 더 낫습니다.

하나의 아이디어는 세션을 사용하여 메시지를 저장 한 다음 리디렉션을하는 것입니다. 페이지에 다음

Session("Message") = "Item was added to list." 
Response.Redirect("List.aspx") 

(또는 마스터 페이지, 아마도)는, 당신은 Session("Message") 확인하고 뭔가를 가지고 있다면, 당신은 그 변수 분명 사용자에게 그 메시지를 보여줍니다.

If Session("Message") IsNot Nothing Then 
    Response.Write(CType(Session("Message"), String)) 'or set a label text, or show a pop up div, or whatever' 
    Session("Message") = Nothing 
End If 

이 방법을 사용하는 경우, 당신이 헬퍼 클래스를 작성하고 당신의 메시지를 관리하는 것을 사용하는 것이 좋습니다 :

MessageHelper.SetMessage("Item added to list.") 

MessageHelper.GetMessage() 

이 방법을 당신이 될 것입니다 필요합니다.

+0

감사합니다. 하지만 내가 편집 한 것을 볼 때 약간의 오류가 있습니다. – natiz

+0

OK, 편집했습니다. String.IsNullOrEmpty()를 사용하는 대신 Nothing을 확인하십시오. –

0

난 당신이 사용하는 버튼의 PostBackUrl을 설정하여 그것을 할 수있는 생각을 편집

데이터를 "List.aspx"에 저장하십시오. 어쩌면 AddToList.aspx에서 변수를 true/false로 설정 한 다음 List.aspx에서 액세스 할 수 있습니까?

더 나은지 확실하지는 않지만 옵션입니다.

1

문자열로 변환해야합니다. 세션 매개 변수는 객체로 저장됩니다.

확장 메소드로 구현하는 것도 유용 할 수 있습니다. 이 방법은 아직 모든 페이지 유형 (마스터 및 UI)

public static class MessageHelper 
    { 
     public static void SetMessage(this Page page, String message) 
     { 
      Session["Message"] = message; 
     } 

     public static string GetMessage(this Page page) 
     { 
      var messageText = Session["Message"] as string; 
      if (!String.IsNullOrEmpty(messageText)) 
      { 
       Session["Message"] = ""; 
       return messageText; 
      } 
      return ""; 
     } 
    } 
+0

나는 당신이 빠진 것 같아! - "if (! String.IsNullOrEmpty (messageText))"이어야합니다. –

+0

맞습니다. 캐치를 가져 주셔서 감사합니다. 나는 그것을 편집 할 것이다. – AdamSane

0

내가 말씀 드릴 수 없습니다에서 사용할 수 있습니다 또는 그냥 게시물이 댓글을 달았을 것이다. 다음과 같이 세션 변수를 변환해야합니다. (string) Session [ "Message"].따라서 코드는 다음과 같습니다.

public class MessageHelper : System.Web.UI.MasterPage 
{ 
    public void SetMessage(String message) 
    { 
     Session["Message"] = message; 
    } 

    public string GetMessage() 
    { 
     if (String.IsNullOrEmpty((string)Session["Message"])) 
     { 
      String temp = (string)Session["Message"]; 
      Session["Message"] = ""; 
      return temp; 
     } 
     else 
     { 
      return ""; 
     } 
    } 
} 

실제로이 클래스를 작성하는 더 좋은 방법은 두 가지 방법 대신 하나의 속성으로 만듭니다. 그것은 다음과 같을 것이다 : (I은 또한 당신의 논리를 고정, GetMessage 함수는 항상 빈 반환 된) 당신이 개 각각의 파일에

public class MessageHelper : System.Web.UI.MasterPage 
{ 
    public MessageHelper() 
    { 

    } 

    public string Message 
    { 
     set { Session["Message"] = value; } 
     get 
     { 
      if (String.IsNullOrEmpty((string)Session["Message"])) 
      { 
       Session["Message"] = ""; 
      } 
      return (string)Session["Message"]; 
     } 
    } 
} 

을, 당신은 설정과 같이 그것을 얻을 것이다 :

//in AddToList.aspx 
MessageHelper msg = new MessageHelper(); 
msg.Message = "The Item was added to your list."; 

//and in List.aspx, assigned to an arbitrary Label named myMessageLabel 
MessageHelper msg = new MessageHelper(); 
myMessageLabel.Text = msg.Message; 
+0

하지만 Session [ "Message"] = ""; 세션 [ "메시지"]를 반환 한 후에는 공백으로 표시되지 않습니까? – natiz

+0

아니요, 세션 설정 중 [ "Message"] = ""; "if (String.IsNullOrEmpty (string) Session ["Message "])"문 내에 있습니다 .BB와는 달리 C#은 구두점을 가지고 있습니다! 그래서 "{"와 "}"사이의 모든 것은 if 성명이 사실로 확인됩니다. – Patches

+0

VB.net to C# 치트 시트 : http://aspalliance.com/625 – Patches

관련 문제