Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 显示更多错误消息_C#_Asp.net Mvc - Fatal编程技术网

C# 显示更多错误消息

C# 显示更多错误消息,c#,asp.net-mvc,C#,Asp.net Mvc,我有一个带有ipaddress的文本字段,但现在可以将ipaddress以127或192开头。我有这个: foreach (var item in lines) { if (item.StartsWith("127") || item.StartsWith("192")) { foreach (var result in lines) { //lines[result].ToString() resu

我有一个带有ipaddress的文本字段,但现在可以将ipaddress以127或192开头。我有这个:

foreach (var item in lines)
{
    if (item.StartsWith("127") || item.StartsWith("192"))
    {
        foreach (var result in lines)
        {
            //lines[result].ToString()
            result.ToString();   
            return new ValidationResult("Some Ip Address(ses) are not correct" + "\n" + result.ToString() );

        }
        // return new ValidationResult("IpAddress cant be saved");   
    }
    if (String.IsNullOrWhiteSpace(IpCondition.IpAddress))
        return new ValidationResult(this.FormatErrorMessage(validationContext.DisplayName));

    IPAddress address;

    if (IPAddress.TryParse(item, out address))
        continue;
    else
        return new ValidationResult("IpAddress cant be saved");                
}
但问题是,如果将:127和192放在文本字段中,您只会看到:127而不是192作为错误的ipaddress


我现在是这样的:

IpConditionSettings IpCondition = validationContext.ObjectInstance as IpConditionSettings;

string[] lines = IpCondition.IpAddress.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
lines = IpCondition.IpAddress.Split(new char[0], StringSplitOptions.RemoveEmptyEntries);
var resultsValidation = new List<ValidationResult>();

foreach (var item in lines)
{
    var result = lines.Where(x => x.StartsWith("127") || x.StartsWith("192"));
    if (result.Any())
        return new ValidationResult("Some Ip Address(ses) are not correct", result);

    if (String.IsNullOrWhiteSpace(IpCondition.IpAddress))
        return new ValidationResult(this.FormatErrorMessage(validationContext.DisplayName));

    IPAddress address;
    if (IPAddress.TryParse(item, out address))
        continue;
    else
        return new ValidationResult("IpAddress cant be saved");
}

错误的IP地址?

您可以使用linq查询来获取无效地址

var result = lines.Where(x => x.StartsWith("127") || x.StartsWith("192"));
然后使用构造函数返回结果

if(result.Any())
    return new ValidationResult("Some IP-address(es) are not correct.", result);

或者,如果要以单个字符串形式返回它们,可以使用
string.Join()


我不知道你来这里的目的是什么。为什么要在
行上迭代两次
对象,一次在另一行中迭代一次?有点不清楚你在问什么。
是否表示textarea元素中的每一新行?假设这是来自验证属性的代码,您只能有一条与属性关联的错误消息。但是如何显示127和192呢?谢谢,这里的逻辑有点偏颇。一旦发现错误,您将返回
行中的第一个位置。您有一条
return new ValidationResult()
语句。一旦发现一个错误,它就会返回(即退出您的方法)啊,谢谢!!很好,我刚刚编辑了这篇文章。你能看一下吗,thx@SavantTheIncredible您可以添加
| |!IPAddress.TryParse(x,out address)
Where()
条件以返回不可解析的地址。
if(result.Any())
    return new ValidationResult("Some IP-address(es) are not correct.", result);
if(result.Any())
    return new ValidationResult("Some IP-address(es) are not correct.\n" + String.Join(", ", result));