如何解决带有数据注释的 Razor 可重用表单视图
我们使用 ASP.NET Core 3.1 和 Razor 来呈现许多 Twitter Bootstrap html 表单,每个表单都有自己的模型。数据注解用于服务器端和客户端验证。
我们尝试创建一个通用的、可重用的局部视图/组件/标签助手/等来为所有字段呈现相同的 html,但发现没有一个方法有效。
考虑以下带有数据注释的字段:
[BindProperty,Required(ErrorMessage = "Field is required"),RegularExpression("[^\\s]+",ErrorMessage = "No spaces allowed")]
public string FirstName { get; set; }
[BindProperty,Required(ErrorMessage = "Field is required")]
public string LastName { get; set; }
[BindProperty] [EmailAddress(ErrorMessage = "Invalid e-mailaddress")]
public string Emailaddress { get; set; }
每个字段应呈现以下 html:
<div class="form-group row">
<label class="col-md-4 control-label" asp-for="FirstName/LastName/Emailaddress">
Your first name / last name / e-mailaddress
</label>
<div class="col-md-4">
<input asp-for="FirstName/LastName/Emailaddress" class="form-control input-md" />
<span class="invalid-feedback" asp-validation-for="FirstName/LastName/Emailaddress"></span>
</div>
</div>
目标是能够创建一个简单的 Razor 页面,例如(或任何其他方法):
<form method="Post">
<partial name="partialFormTextInput for="FirstName" />
<partial name="partialFormTextInput for="LastName" />
<partial name="partialFormTextInput for="Emailaddress" />
<input type="submit" value="Submit form">
</form>
它将大大简化为不同模型创建表单的过程。我们发现主要问题在于数据注释,因为它们不会在部分视图中呈现,也不会在标签助手中呈现。
有人成功创建过这个吗?
更新 如果使用局部视图,实际(简化)结果是:
<input type="text" id="FirstName" name="FirstName" value="">
<span class="invalid-feedback field-validation-valid" data-valmsg-for="FirstName" data-valmsg-replace="true"></span>
虽然预期的结果是:
<input type="text" class="form-control input-md" data-val="true" data-val-regex="No spaces allowed" data-val-regex-pattern="[^\s]+" data-val-required="Field is required" id="FirstName" name="FirstName" value="">
<span class="invalid-feedback field-validation-valid" data-valmsg-for="FirstName" data-valmsg-replace="true"></span>
输入中缺少 data-val* 属性
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。