【问题标题】:Is there a way to stop all the extra text in an exception message?有没有办法停止异常消息中的所有额外文本?
【发布时间】:2015-10-20 09:01:30
【问题描述】:

我有一个网格视图,其中有两列有下拉列表。此下拉列表会在选择值后立即保存。我想防止用户在第二个下拉列表中选择一个值而不从第一个下拉列表中选择一个值。所以第一个下拉列表不应该是空白的。

public static void UpdateMemReasonSecond(int SerNoID, string sel)
{
    JobOutturn SerNo = new JobOutturn(SerNoID);
    SerNo.MemReasonSecond = sel;
    SerNo.MemDate = DateTime.Now;
    SerNo.MemUser = CurrentUser.Username;
    SerNo.Update();

    if (SerNo.MemReason == "" & SerNo.MemReasonSecond != "")
    {
        throw new Exception("Please fill in first reason");
    }
}

jQuery 代码:

function UpdateMemReasonSecond(SerNoID, sel) {
        PageMethods.UpdateSecondMemReasonUserControl(SerNoID, sel, OnUpdateSuccess, OnUpdateFailReason);
    }

所以异常有效,但出现的错误消息包含很多额外的行,而不仅仅是我的消息。有没有办法只显示我的消息?

【问题讨论】:

  • ex.Message,你是说?
  • 您根本不应该为此使用例外
  • “不要故意从您自己的源代码中抛出 System.Exception、System.SystemException、System.NullReferenceException 或 System.IndexOutOfRangeException。” msdn.microsoft.com/en-us/library/ms173163.aspx
  • 不要这样做,这是一种不好的做法,而是查看级联下拉列表,例如stackoverflow.com/questions/27915527/…
  • @MatíasFidemraizer 它是一个静态方法,所以我不能只创建一条警报消息。似乎只显示异常消息。

标签: c# asp.net exception exception-handling


【解决方案1】:

要在静态方法中使用ClientScript,请将页面对象作为参数传递给您的静态方法。Page 不是static class。您不能在静态方法中调用非静态字段。所以您需要传递page 对象作为参数添加到您的静态方法中。

public static void UpdateMemReasonSecond(int SerNoID, string sel ,Page page)
{
   JobOutturn SerNo = new JobOutturn(SerNoID);
        SerNo.MemReasonSecond = sel;
        SerNo.MemDate = DateTime.Now;
        SerNo.MemUser = CurrentUser.Username;
        SerNo.Update();

        if (SerNo.MemReason == "" & SerNo.MemReasonSecond != "")
        {

            page.ClientScript.RegisterStartupScript(page.GetType(),"alert", "<script>alert('Please fill in first reason');</script>");
        }
    }        

【讨论】:

    猜你喜欢
    • 2011-12-03
    • 1970-01-01
    • 2014-01-19
    • 1970-01-01
    • 2013-06-14
    • 2023-01-07
    • 2022-06-13
    • 2013-12-25
    • 1970-01-01
    相关资源
    最近更新 更多