0

再会。可能是错误的方式,但这是最快的方式。所以:

我有一个模型,它存储 IP 地址(NetworkMask)只要(整数)(存储在 mssql 表中)然后我需要实现输入和更正我添加未映射字段(IPv4NetworkMask)到模型中的 IP 地址:

    [NotMapped]
    public string IPv4NetworkMask{
        get{
            return ExtIP.LongToIPv4(NetworkMask);
        }
        set{
            NetworkMask=ExtIP.StringToIPv4(value);
        }
    }

并进入视野:

        <div class="editor-label">
            @Html.LabelFor(model => model.NetworkMask)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.IPv4NetworkMask)
            @Html.ValidationMessageFor(model => model.IPv4NetworkMask)
        </div>

现在一切正常,当用户输入不正确的网络地址时,我在 StringToIPv4 中出现异常,并且执行超出了控制器

        if (!ModelState.IsValid)
            return View(NewModelObj);

但在客户端我收到消息:“值'fdgdfgdf'无效。” 如何将此消息更改为其他内容?

4

2 回答 2

1

如果您想在业务层执行此操作,可以使用自定义验证器

例如:

public static ValidationResult ValidateIP(string inputIP)
{
   bool isValid = false;

    try {
        ExtIP.StringToIPv4(inputIP);
        isValid = true;
    }
    catch {
    }


    if (isValid)
    {
      return ValidationResult.Success;
    }
    else
    {
      return new ValidationResult(
          "Ip is not in a correct format.");
    }
  }
于 2012-09-19T10:58:54.487 回答
0

我找到了最简单的方法:

@Html.ValidationMessageFor(model => model.IPv4NetworkMask, "You have entered incorrect IP")
于 2012-09-19T09:23:11.103 回答