美好的一天。可能是错误的方式,但这是最快的方式。所以:
我有一个模型,它存储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'无效。” 如何将此消息更改为其他内容?
答案 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")