как установить предыдущие значения из всего ввода текста в viewstate и получить их из определенного условия - PullRequest
0 голосов
/ 15 мая 2019

У меня есть страница mail.aspx. которые должны составить почтовое средство? Кроме того, пользователь может выбрать из учетной записи пользователя, CC и BCC. вместе с ними, когда метод обновления панели обновления вызывает пустые все предыдущие значения из текстового поля. чтобы избежать их, я создаю один метод, который принимает предыдущие значения и отображает их для определенного условия.

вот мой метод:

  private void SetViewStateData(bool sTitle, bool sFromuser, bool sTouser, bool sCc, bool sBcc, bool sBody)
        {
            if (sTitle.Equals(true))
            {
                ViewState["sTitle"] = Request.Form.Get("txt_ComName1");
            }
            else
            {
                ViewState["sTitle"] = string.Empty;
            }
            if (sFromuser.Equals(true))
            {
                ViewState["sFromuser"] = Request.Form.Get("txt_ComName2");
            }
            else
            {
                ViewState["sFromuser"] = string.Empty;
            }
            if (sTouser.Equals(true))
            {
                ViewState["sTouser"] = Request.Form.Get("txt_ComName3");
            }
            else
            {
                ViewState["sTouser"] = string.Empty;
            }
            if (sCc.Equals(true))
            {
                ViewState["sCc"] = Request.Form.Get("txt_ComName4");
            }
            else
            {
                ViewState["sCc"] = string.Empty;
            }
            if (sBcc.Equals(true))
            {
                ViewState["sBcc"] = Request.Form.Get("txt_ComName5");
            }
            else
            {
                ViewState["sBcc"] = string.Empty;
            }
            if (sBody.Equals(true))
            {
                ViewState["sBody"] = Request.Form.Get("CKEditor1");
            }
            else
            {
                ViewState["sBody"] = string.Empty;
            }
            txt_ComName1.Text =  sTitle.Equals(false) ? string.Empty : ViewState["sTitle"].ToString();
            txt_ComName2.Text = sFromuser.Equals(false) ? string.Empty : ViewState["sFromuser"].ToString();
            txt_ComName3.Text = sTouser.Equals(false) ? string.Empty : ViewState["sTouser"].ToString();
            txt_ComName4.Text = sCc.Equals(false) ? string.Empty : ViewState["sCc"].ToString();
            txt_ComName5.Text = sBcc.Equals(false) ? string.Empty : ViewState["sBcc"].ToString();
            CKEditor1.Text = sBody.Equals(false) ? string.Empty : ViewState["sBody"].ToString();
        }

эта ошибка повышения, когда txt_ComName2.Text устанавливает значение состояния просмотра, если состояние bool равно true или string.empty. однако, это прекрасно работает с первым текстовым полем. когда второй, это дает мне ошибку вроде:

Server Error in '/EASYMAIL_METRO' Application.   Object reference not set to an instance of an object.    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 
     Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.     
    Source Error: 
    Line 240:        }
    Line 241:        txt_ComName1.Text =  sTitle.Equals(false) ? string.Empty : ViewState["sTitle"].ToString();
     Line 242:        txt_ComName2.Text = sFromuser.Equals(false) ? string.Empty : ViewState["sFromuser"].ToString();
    Line 243:        txt_ComName3.Text = sTouser.Equals(false) ? string.Empty : ViewState["sTouser"].ToString();
    Line 244:        txt_ComName4.Text = sCc.Equals(false) ? string.Empty : ViewState["sCc"].ToString();        Source File: c:\shalin\EASYMAIL_METRO\mail.aspx.cs    Line: 242     
 Stack Trace:   

 [NullReferenceException: Object reference not set to an instance of an object.]
   mail.SetViewStateData(Boolean sTitle, Boolean sFromuser, Boolean sTouser, Boolean sCc, Boolean sBcc, Boolean sBody) in c:\shalin\EASYMAIL_METRO\mail.aspx.cs:242
   mail.btn_add_Click(Object sender, EventArgs e) in c:\shalin\EASYMAIL_METRO\mail.aspx.cs:1823
   mail.Page_Load(Object sender, EventArgs e) in c:\shalin\EASYMAIL_METRO\mail.aspx.cs:71
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +51
   System.Web.UI.Control.OnLoad(EventArgs e) +95
   System.Web.UI.Control.LoadRecursive() +59
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +678

что с этим не так ... пожалуйста, помогите мне, ребята ...

...