gpt4 book ai didi

asp.net - 从 HTML 帮助程序中的参数获取属性

转载 作者:行者123 更新时间:2023-12-01 04:08:00 25 4
gpt4 key购买 nike

因此,假设我有一个小的模型对象,其中包含一个必需的字符串,并且最大长度为 50:

public class ObjectModel
{
[Required]
[MaxLength(50)]
public string Name { get; set; }
}

我需要创建一个自定义 HTML 帮助程序,我可以在其中传递一个字符串(在本例中为 ObjectModel.Name),如果需要,创建一个类为“required”的 HTML 输入元素。

现在,我正在尝试与:
 public static HtmlString Input(string label)
{
return new HtmlString("<input type=\"text\" />");
}

所以在我的 Razor View 中,如果我做类似 @InputHelper.Input(Model.Name) 的事情,我无法访问这些属性。我的问题是,如何构建我的 HTML 帮助程序类以接受 Model 属性及其属性?

所以我取得了进一步的进展,但我仍然没有足够的经验来浏览表达式以获得我想要的。现在,我有:
@InputHelper.Input(m => Model.Title.TitleName, "titlename2", "Title Name")
第二个和第三个参数与这个问题无关。在辅助方法中,我有:
public static HtmlString Input(Expression<Func<string, Object>> expression, string id, string label)
但是当我去调试代码时,有太多的对象和属性需要筛选,我不知道我的 Required 和 MaxLength 属性在哪里,如果它们甚至在那里。

最佳答案

您可以获取您的 RequiredMaxLength使用以下扩展方法的属性:

public static class ExpressionExtensions
{
public static TAttribute GetAttribute<TIn, TOut, TAttribute>(this Expression<Func<TIn, TOut>> expression) where TAttribute : Attribute
{
var memberExpression = expression.Body as MemberExpression;
var attributes = memberExpression.Member.GetCustomAttributes(typeof(TAttribute), true);
return attributes.Length > 0 ? attributes[0] as TAttribute : null;
}
}

然后从您的代码中,您可以执行以下操作:
public static HtmlString Input(Expression<Func<string, Object>> expression, string id, string label)
{
var requiredAttribute = expression.GetAttribute<string, object, RequiredAttribute>();
if (requiredAttribute != null)
{
// some code here
}
}

关于asp.net - 从 HTML 帮助程序中的参数获取属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8124622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com