我是表示模型
的简单类public class Test{
[Required]
[DisplayName("Code")]
[RegularExpression(@"^[0-9A-Za-z ]+$", ErrorMessageResourceType = typeof(ErrorMessages), ErrorMessageResourceName = "GeneralShowModel_Code_Error")]
[MaxLength(25, ErrorMessageResourceType = typeof(ErrorMessages), ErrorMessageResourceName = "GeneralShowModel_Code_Length_Error")]
public string Code { get; set; }
[Range(0, Int16.MaxValue, ErrorMessageResourceType = typeof(ErrorMessages), ErrorMessageResourceName = "GeneralShowModel_MaxGuests_Error")]
[DisplayName("Max guests")]
public long MaxGuests { get; set; }
[DisplayName("Pre-registration is closed")]
public bool IsPreRegistrationClosed { get; set; }
[DisplayName("In test mode")]
public bool InTestMode { get; set; }
}
我创建了简单的自定义html助手,用于使用类' required'来渲染标签。当property具有Required属性
时public static class CustomHelper
{
public static MvcHtmlString RequiredLabelFor<T, TU>(this HtmlHelper<T> helper,
Expression<Func<T, TU>> expression)
{
var metaData = ModelMetadata.FromLambdaExpression(expression, helper.ViewData);
var isRequired = metaData.IsRequired;
var htmlFieldName = ExpressionHelper.GetExpressionText(expression);
var label = new TagBuilder("label");
label.SetInnerText(metaData.DisplayName);
label.Attributes.Add("for", helper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldId(htmlFieldName));
if (isRequired)
{
label.Attributes.Add("class", "required");
}
return MvcHtmlString.Create(label.ToString());
}
}
我以这种方式使用这个助手
@Html.RequiredLabelFor(m => m.Code)
MaxGuests,IsPreRegistrationClosed等没有必需属性,但metaData.IsRequired为true。如何解决这个障碍?
答案 0 :(得分:1)
这是因为MaxGuests
是一种不允许null
值的基本类型。因此,这是必需的。
试试这个:
public long? MaxGuests { get; set; }
在?
之后查看long
。这使它可以为空。