从服务器端发送的MVC3 C#自定义验证消息

时间:2012-09-05 08:14:26

标签: asp.net-mvc-3 custom-validators

美好的一天。可能是错误的方式,但这是最快的方式。所以:

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

    [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中得到一个Exception并且执行从控制器中移出

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

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

2 个答案:

答案 0 :(得分:1)

如果您想在业务层上执行此操作,可以使用custom validator

例如:

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.");
    }
  }

答案 1 :(得分:0)

我找到了最简单的方法:

@Html.ValidationMessageFor(model => model.IPv4NetworkMask, "You have entered incorrect IP")