我制定了自己的惯例<条码>。
public class UrlValidationAttribute : ValidationAttribute
{
public UrlValidationAttribute() {}
public override bool IsValid(object value)
{
if (value == null)
return true;
var text = value as string;
Uri uri;
return (!string.IsNullOrWhiteSpace(text) &&
Uri.TryCreate(text, UriKind.Absolute, out uri));
}
}
www.un.org/Depts/DGACM/index_spanish.htm 我是利用这一模式的,它完全发挥作用。 然而,现在我试图在一种观点模式上加以利用:
public class DeviceAttribute
{
public DeviceAttribute(int id, attributeDefinition, String url)
{
ID = id;
Url = url;
}
public int ID { get; set; }
[UrlValidation]
public String Url { get; set; }
}
部分观点也采用了这种观点模式:
@model List<ICMDB.Models.DeviceAttribute>
<table class="editor-table">
@foreach (var attribute in Model)
{
<tr>
@Html.HiddenFor(a => attribute.ID)
<td class="editor-label">
@Html.LabelFor(a => attribute.Url)
</td>
<td class="editor-field">
@Html.TextBoxFor(a => attribute.Url)
@Html.ValidationMessageFor(a => attribute.Url)
</td>
</tr>
}
</table>
出于某种不了解的原因,虽然乌拉尔瓦利德加特大火的构造者,但IsValid功能却起火。 任何想法?
<><>Edit>: 在进一步调查方面,似乎正在出现这种情况,因为<代码>DeviceAttribute观点模式实际上是部分观点模式。 整页采用了一种不同的观点模式,其中包含<代码>DeviceAttribute浏览模型。 因此,当我的控制者行动被称作时,整页观模型已经形成,其价值已经填满,但没有建立<代码>DeviceAttribute的观测模型,因此没有进行验证。