Sie müssen Führen Sie die folgenden Schritte aus:
Schritt 1: custom
public class VisibilityAttribute : ValidationAttribute
{
private bool _isVisible;
public VisibilityAttribute(bool visible = true)
{
_isVisible = visible;
}
public bool Status
{
get
{
return _isVisible;
}
set
{
_isVisible = value;
}
}
}
Schritt 2 Attribut erstellen: Fügen Sie benutzerdefinierte Attribut
[Visibility(Status = false)]
public string FullName { get; set; }
Schritt 3 zu modellieren: Erstellen Sie benutzerdefinierte HTML-Hilfs
public static class CustomHtmlExtensions
{
public static MvcHtmlString CustomDisplayFor<TModel, TResult>(this HtmlHelper<TModel> html,
Expression<Func<TModel, TResult>> expression)
{
ExpressionType type = expression.Body.NodeType;
if (type == ExpressionType.MemberAccess)
{
MemberExpression memberExpression = (MemberExpression)expression.Body;
PropertyInfo pi = memberExpression.Member as PropertyInfo;
var attributes = pi.GetCustomAttributes();
foreach (var attribute in attributes)
{
if (attribute is VisibilityAttribute)
{
VisibilityAttribute vi = attribute as VisibilityAttribute;
if (vi.Status)
{
var metadata = ModelMetadata.FromLambdaExpression<TModel, TResult>(expression, html.ViewData);
return MvcHtmlString.Create(metadata.SimpleDisplayText);
}
}
}
}
return MvcHtmlString.Create("");
}
}
Schritt 4: Verwenden Sie benutzerdefinierte HTML-Helper in Ansicht
@Html.CustomDisplayFor(model => model.FullName)
Dies könnte Ihnen beim Einstieg helfen [Wie versteckt man ein div-Element abhängig vom Modellwert?] (Http://stackoverflow.com/questions/22046108/how-to-hide-a-div-element-) Abhängig von Model-Value-Mvc) – Shyju
Ich möchte CustomAttribute verwenden, diese Lösung ist sehr wenig mit der Benutzeroberfläche gekoppelt. – maxspan
Was meinen Sie mit ** CustomAttribute **? – Win