2011-10-12 2 views
0

ASP.NET에서 작성한 간단한 전자 메일 양식을 codebehind 파일의 논리와 함께 사용합니다. 그것은 모두 C#입니다 (논리는 ...). 어쨌든, 페이지로드에서 나는 다음과 같습니다ASP.NET 폼에서 제출하면 개체 인스턴스에 설정되지 않은 개체 참조가 throw됩니다.

protected void Page_Load(object sender, EventArgs e) 
{ 
    RequestorName.Text = Request.Form["UserName"].ToString(); 
    RequestorTitle.Text = Request.Form["JobTitle"].ToString(); 
    RequestorEmail.Text = Request.Form["Email"].ToString(); 
    RequestorPhone.Text = Request.Form["Phone"].ToString(); 
    RequestorAddress1.Text = Request.Form["Address"].ToString(); 
    RequestorAddress2.Text = Request.Form["City"].ToString() + " " + Request.Form["State"].ToString() + ", " + Request.Form["Zip"].ToString(); 

} 

가 손으로 모든 것을 기입 할 필요가 없습니다 그것은 몇 가지 필드에 사용자 정보를 가져옵니다으로이 잘 작동합니다. 뒤에 코드에서

내 다른 2 가지 방법 : 내 양식 페이지에서

protected void SubmitForm_Click(object sender, EventArgs e) 
{ 
    SendEmail(); 
} 

protected void SendEmail() 
{ 
    try 
    { 
     //compose email and send 

    } 
    catch (Exception ex) 
    { 
     ErrorMessage.Text = "Error: " + ex.ToString(); 

    } 
} 

버튼 코드는 이것이다 : 나는 양식에 보내기 버튼을 클릭하면

<center> 
       <asp:Button runat="server" Text="Submit" ID="Submit" OnClick="SubmitForm_Click" class="button red" /> 
</center> 

오류가 발생하는 전자 메일을 생성하여 보냅니다. Page_Load 코드를 삭제하고 잘 작동하지만 사용자가 많은 정보를 입력 할 필요가 없도록 유지하고 싶습니다. 내 Google 푸를 사용하여 스레드/기사의 톤을 읽을 수는 있지만 해결책을 찾을 수 없습니다했습니다

... 어떤 도움을

감사합니다. IsPostBack을위한

답변

4

추가 확인 :

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
    RequestorName.Text = Request.Form["UserName"].ToString(); 
    RequestorTitle.Text = Request.Form["JobTitle"].ToString(); 
    RequestorEmail.Text = Request.Form["Email"].ToString(); 
    RequestorPhone.Text = Request.Form["Phone"].ToString(); 
    RequestorAddress1.Text = Request.Form["Address"].ToString(); 
    RequestorAddress2.Text = Request.Form["City"].ToString() + " " + Request.Form["State"].ToString() + ", " + Request.Form["Zip"].ToString(); 
    } 

} 
+0

나는 당신이 거기에 NOT을해야 할 수도 있습니다 생각합니다. if (! IsPostBack). 페이지 입력시 필드를 채우고 싶을뿐입니다. – Bill

+0

@Bill 감사합니다. –

+0

와우, 정말 잘 했어! 빠른 수정 및 팁 주셔서 감사합니다. 매일 새로운 것을 배우십시오. 나는 <3 stackoverflow. – Valien

0

당신이 당신의 Page_Load 이벤트에 if (Page.IsPostBack == false)을 추가하는 시도 했습니까?

나는 사용자가 작성한 입력란에서 코드를 가져 오지만 다른 마크 업을 보지 않고 양식에서 값을 다시 할당해야하는 이유가 무엇인지 모르겠습니다 양식의 다른 필드가 될 수 있습니다.

0

구체적으로 오류가 발생합니까? 코드에서 다른 페이지의 전자 메일 양식에 게시하고 매개 변수를 전달한다고 가정합니다.

그렇다면 .Text가 페이지 컨트롤이라고 가정하면 If (! IsPostback) {...}의 컨트롤 필러를 포함하여 페이지를 처음으로로드해야합니다. 그런 다음 전자 메일 코드를 로컬 컨트롤에서 읽을 수 있습니다.

제 생각 엔 "Request.Form [..."항목은 아마도 포스트 백에서 오류를 다시 발생시키는 항목입니다.

HTH 데이브