c# - .NET Core View 属性名称与模型属性名称不同
问题描述
我有一个 ajax 函数,当服务器端发生错误时,它会向字段返回错误消息。
这就是我显示错误的方式:
$.each(result.errors, function (index, item) {
// Get message placeholder
var element = $('[data-valmsg-for="' + item.propertyName + '"]');
element.empty();
// Update message
element.append($('<span></span>').text(item.errorMessage));
// Update class names
element.removeClass('field-validation-valid').addClass('field-validation-error');
$('#' + item.propertyName).removeClass('valid').addClass('input-validation-error');
});
这应该读取返回的属性名称,即我的字段名称并在其上显示消息。
这是领域。这是一个下拉列表
<div class="row">
<div class="col-sm-12">
<div class="form-group">
@Html.HiddenFor(m => m.UserId)
@Html.DropDownListFor(m => m.BranchDropdownListViewModel.BranchId, Model.BranchDropdownListViewModel.Branch, "Select Branch", new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.BranchDropdownListViewModel.BranchId)
</div>
</div>
</div>
当我检查代码时,这个下拉列表的名称是 BranchDropdownListViewModel.BranchId
但是,在我的控制器中,当我尝试查找此字段的名称时,如下所示:
ModelState.AddModelError(nameof(Input.BranchDropdownListViewModel.BranchId), "Branch already exists");
它仅将 BranchId 显示为字段的名称。
这是模型:
public class UserBranchDetailsViewModel
{
public string Id { get; set; }
public string UserId { get; set; }
public string TenantId { get; set; }
public BranchDropdownListViewModel BranchDropdownListViewModel { get; set; }
}
public class BranchDropdownListViewModel
{
[Required]
[Display(Name = "Branch")]
public string BranchId { get; set; }
public IEnumerable<SelectListItem> Branch { get; set; }
}
如何匹配控制器视图中显示的名称?我必须手动完成吗?
解决方案
使用 nameof 只会产生属性名称的最后一部分,在您的情况下是BranchId
.
由于注射HtmlHelper
不是那么简单,我建议你这样做
ModelState.AddModelError($"{nameof(Input.BranchDropdownListViewModel)}.{nameof(Input.BranchDropdownListViewModel.BranchId)}", "Branch already exists");
但是如果你真的想用的话HtmlHelper
,看看这个方法 HtmlHelper.NameFor()
。
推荐阅读
- amazon-ec2 - 如何检查 AWS EC2 AMI 是否需要 EULA 选择加入?
- python - 如何减少冒泡排序中的变量数量?
- javascript - 在推送到数组之前检查数组中是否存在项目
- google-apps-script - 在 People API 迁移之后,Google Apps 脚本联系人服务 (ContactsApp) 是否仍然有效?
- javascript - 为什么gdb调试器不能识别a.exe以外的exe文件
- react-native - 如何循环反应本机 useState 数组?
- node.js - 提交 Express 后端发布请求以添加到 Firebase Cloud Firestore 的 React 按钮
- julia - 如何以特定格式在 Julia 中保存数组或矩阵?
- svg - 如何在 Inkscape 中裁剪带有太多空格的 svg 文件?
- api - Twilio:在循环发送短信的手机列表时尝试期望