1

一个方法有一些方法,也有一些方法有其他方法。
我应该如何将错误消息传递给 top 方法以在窗口或对话框上显示消息?
它可能不是错误消息,而是警告消息或其他内容。
如果你能给我一个关于 ASP.NET MVC 的建议,那就太好了。在 ASP.NET MVC 中,操作方法是最重要的。

4

5 回答 5

1

一种可能性是使用该TryXXX模式:

public bool TryXXX(InputType input, out ResultType result, out string errorMessage);

在你的控制器中:

public ActionResult Foo()
{

    ResultType result;
    out string errorMessage;
    if (!TryXXX(input, out result, out errorMessage))
    {
        ModelState.AddModelError("", errorMessage);
        return View();
    }

    // here you could use the result
    ...

}

另一种可能性是将 传递ModelState给较低层,该层将负责向其添加错误消息,以便在您的控制器操作中,您只需要ModelState.IsValid在调用某些方法后进行检查。

另一种可能性是使用异常,但请记住,异常应该仅用于处理异常情况。应避免使用它们来处理业务验证。

确实有不同的方法,这完全取决于您到底要做什么。

于 2012-05-08T12:07:54.657 回答
1

最简单的事情是,您可以仅在最高方法上进行一次 try catch。

关于 MVC 和 asp.net,您不想向最终用户显示错误。最好通过表单中的验证来防止警告。

最后一点,如果您确实需要向最终用户显示警告,那么:

  • 创建一个名为字符串“WarningMessage”的公共变量
  • 在流程开始之前重置值
  • 将警告分配/附加到每个有警告的方法内的变量
  • 检查 WarningMessage 在返回视图中是否具有值。
  • 如果它有值显示消息
于 2012-05-08T12:12:02.093 回答
0

在你想要的地方抛出一个自定义异常

throw new Exception("Message");

默认情况下,异常会一直冒泡到堆栈顶部(即显示服务器错误页面),除非您在代码中的某处捕获它

try{
  //code
} catch (Exception e) {
  //use exception to display the message
}

可以从任何子方法抛出异常并被父方法捕获

于 2012-05-08T12:11:56.273 回答
0

在内部方法中使用:

HttpContext.Current.AddError(new Exception("error Message"));

在控制器方法中:

foreach (var item in HttpContext.AllErrors)
{
    //item is Exception
}
于 2012-05-08T13:38:34.463 回答
-1

这可以使用 Javascript 轻松完成

var errorflag= false;
var msg='';
if(Failedcondition){
errorflag=true;
msg='Please verfiy first.';
}
if(SecondFailedCondition){
errorflag=true;
msg='Please verfiy first.';

}
else
{
other conditions
}
于 2012-05-08T12:09:54.557 回答