【发布时间】:2022-07-08 19:39:07
【问题描述】:
我正在使用带有 C# 的 ASP.NET Core MVC。
我这样定义我的模型:
public class Student
{
public class FirstName {get;set;}
public int? PriorityId { get; set; }
}
public class Priority
{
[Key]
public int PriorityId { get; set; }
[Required]
[Display(Name = "Priority Name")]
public string Name { get; set; }
}
所以它会像这样为优先级下拉列表呈现 HTML。
Priority is required.
问题
当我要检查自定义验证时,消息不会显示在下拉列表下方。
if (obj.Student.PriorityId <= 0)
{
ModelState.AddModelError(nameof(obj.Student.PriorityId), "Priority is required.");
}
当我尝试使用
nameof()
时,上面的代码不起作用。
但是当我删除
nameof()
并写下如下字符串时。它在下拉菜单下方显示错误消息。
if (obj.Student.PriorityId <= 0)
{
ModelState.AddModelError("Student.PriorityId", "Priority is required.");
}
有什么方法可以改进C#的
nameof()
函数?
-
不行,你不能改进
nameof()
函数。 -
nameof()
将返回您输入的变量的名称,该名称为"PriorityId"
。nameof()
在这里提供什么好处?如果您已经知道必须将什么变量作为参数放入,那么您也知道结果... -
您能否详细说明您的“无效”是什么意思?您是否收到任何编译或运行时错误?或者观察到的行为不像预期的那样?哪个是预期的?
-
如果要使用
nameof( )
实现"Student.PriorityId"
,可以将第一个AddModelError( )
输入值扩展为:$"{nameof(obj.Student)}.{nameof(obj.Student.PriorityId)}"
。 -
@derpirscher
nameof()
没有被使用,因为人们不知道结果(它总是一个常数),但因为它确保在重构的情况下值保持正确。