使用nameof()检查类名及其父级以进行MVC验证

SB2*_*055 5 c# asp.net-mvc unobtrusive-validation

我正在尝试使用nameof向ModelState添加错误:

 @Html.ValidationMessageFor(m => m.Foo.Bar)
Run Code Online (Sandbox Code Playgroud)

在视图中,这已被标记nameFoo.Bar.

当我添加模型状态错误时,我必须将该错误键入a name,所以我使用nameof(Foo.Bar)- 但是这只是Bar在我需要时给了我Foo.Bar.现在我可以硬编码,Foo.Bar但我宁愿使用强类型的方法.我有什么选择?

Edu*_*hov 4

没有内置的方法可以做到这一点,但有一些解决方法。

您可以自己连接命名空间的名称(没有运行时损失,但难以维护):

String qualifiedName = String.Format("{0}.{1}", nameof(Foo), nameof(Bar));
Run Code Online (Sandbox Code Playgroud)

另一种选择是使用反射直接获取完全限定名称(更简单,但有一些运行时损失):

String qualifiedName = typeof(Foo.Bar).FullName;
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。