Files
2026-07-10 15:25:05 +08:00

162 lines
4.9 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using Zhaizj.Framework.Web;
namespace Zhaizj.Framework {
/// <summary>
/// 对结果信息的封装(有效或错误),在ORM和MVC中经常被使用
/// </summary>
public class Result {
private Boolean _autoShow;
private List<String> _errors;
private String _errorsHtml;
private String _errorsText;
private String _errorsJson;
private Object _Info;
public Result() {
_autoShow = true;
_errors = new List<String>();
}
/// <summary>
/// 根据错误信息构建 result
/// </summary>
/// <param name="errorMsg"></param>
public Result( String errorMsg ) {
//_autoShow = true;
_errors = new List<String>();
_errors.Add( errorMsg );
}
/// <summary>
/// 添加错误信息
/// </summary>
/// <param name="errorMsg"></param>
public void Add( String errorMsg ) {
_errors.Add( errorMsg );
}
/// <summary>
/// 合并结果信息
/// </summary>
/// <param name="result"></param>
public void Join( Result result ) {
foreach (String str in result.Errors) {
Add( str );
}
}
/// <summary>
/// 是否自动显示(默认都是自动显示的,比如表单验证发生错误会自动显示在表单上方)
/// </summary>
public Boolean AutoShow {
get { return _autoShow; }
set { _autoShow = value; }
}
/// <summary>
/// 获取所有错误信息的列表
/// </summary>
public List<String> Errors {
get { return _errors; }
set { _errors = value; }
}
/// <summary>
/// html 格式的错误信息(封装在一个class=Zhaizj.FrameworkValidationResultList的无序列表ul中)
/// </summary>
public String ErrorsHtml {
get {
if (IsValid) return null;
if (_errorsHtml == null) {
StringBuilder builder = new StringBuilder( "<ul class=\"Zhaizj.FrameworkValidationResultList\">" );
for (int i = 0; i < Errors.Count; i++) {
builder.Append( "<li>" );
builder.Append( Errors[i] );
builder.Append( "</li>" );
}
builder.Append( "</ul>" );
_errorsHtml = builder.ToString();
}
return _errorsHtml;
}
}
/// <summary>
/// 纯文本格式的错误信息,包括换行符。
/// </summary>
public String ErrorsText {
get {
if (IsValid) return null;
if (_errorsText == null) {
StringBuilder builder = new StringBuilder();
for (int i = 0; i < Errors.Count; i++) {
builder.Append( Errors[i] );
builder.Append( Environment.NewLine );
}
_errorsText = builder.ToString();
}
return _errorsText;
}
}
/// <summary>
/// Json 格式的错误信息。格式 {"IsValid":false, "Msg":"请填写作者名称,请填写评论内容,验证码错误"}
/// </summary>
public String ErrorsJson {
get {
if (IsValid) return "{}";
if (_errorsJson == null) {
// 格式 {"IsValid":false, "Msg":"请填写作者名称,请填写评论内容,验证码错误"}
StringBuilder builder = new StringBuilder( );
builder.Append( "{" );
builder.Append( "\"IsValid\":false, \"Msg\":\"" );
for (int i = 0; i < Errors.Count; i++) {
builder.Append( Errors[i].Replace( "\"", "'" ) );
if (i < Errors.Count - 1) builder.Append( "," );
}
builder.Append( "\"}" );
_errorsJson = builder.ToString();
}
return _errorsJson;
}
}
/// <summary>
/// 附带的对象
/// </summary>
public Object Info {
get { return _Info; }
set { _Info = value; }
}
/// <summary>
/// 结果是否包含错误
/// </summary>
public Boolean HasErrors {
get { return (Errors.Count > 0); }
}
/// <summary>
/// 结果是否全部正确有效
/// </summary>
public Boolean IsValid {
get { return !HasErrors; }
}
private static Boolean isWeb {
get { return SystemInfo.IsWeb; }
}
}
}