gpt4 book ai didi

asp.net-mvc - MVC5 : Can @Html. TextBoxFor(或EditorFor)从模型的数据注释中获取其MaxLength?

转载 作者:行者123 更新时间:2023-12-03 02:26:55 27 4
gpt4 key购买 nike

似乎应该有一种指定模型注释的方法,例如:

[Display(Name="State")]
[MaxLength(2)]
public string State { get; set; }

这样当它在 EditorFor 或 TextBoxFor 中使用时,例如:

@Html.EditorFor(model => model.State)

@Html.EditorFor(model => model.State)

生成 html 会将输入字段的 maxlength 设置为 2。现在,我需要这样做:

@Html.TextBoxFor(model => model.State, new { maxlength = 2 })

由于这违反了 DRY 原则,我想知道是否已经有一种内置方法可以将数据注释从数据注释流到输入字段?

最佳答案

有一个答案 here它描述了一种获取 View 中附加元数据值的方法。考虑到这一点,你可以做这样的事情......

注释您的模型:

[AdditionalMetadata("MaxLength", 30)]
public string State { get; set; }

定义自定义编辑器模板 (String.cshtml):

@{
string maxLength = ViewData.ModelMetadata.AdditionalValues.ContainsKey("MaxLength")
? ViewData.ModelMetadata.AdditionalValues["MaxLength"].ToString() : null;
}

@Html.TextBox("", Model, new { maxlength = maxLength })

然后就这样做:

@Html.EditorFor(m => m.State)

这可能需要一些调整,并且可以通过定义自定义属性而不是仅使用AdditionalMetadata来改进,但它应该可以帮助您入门。

我也倾向于将对模型附加元数据的调用封装在自定义 HTML 帮助器中。

关于asp.net-mvc - MVC5 : Can @Html. TextBoxFor(或EditorFor)从模型的数据注释中获取其MaxLength?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22271500/

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