Используйте nameof (), чтобы получить AttributePath для modelstate.addmodelerror ()C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Используйте nameof (), чтобы получить AttributePath для modelstate.addmodelerror ()

Сообщение Anonymous »

Мне нравится использовать nameof () в моем приложении ASP.net Core при настройке ошибок MVC с использованием modelstate.addmodelerror (). Это уменьшает скрытые ошибки с тех пор, как я передаю имя атрибута здесь. По сравнению со строкой, это имеет то преимущество, что ошибка компилятора бросается, когда атрибут был переименован. < /p>

Пример < /strong> < /p>

Код: Выделить всё

class MyModel{
public string Name{get;set;}
}
public class MyController:Controller{
public IActionResult Test(MyModel model) {
// Will hiddenly fail when "Name" is renamed to something else
ModelState.AddModelError("Name", "The Name field is required!");

// Better: Using the auto renaming feature of VS, this will be updated if "Name" was renamed
ModelState.AddModelError(nameof(model.Name), "The Name field is required!");
}
}
< /code>

Это работает, пока у меня не появится другая сущность: < /p>

class MyModel{
public string Name{get;set;}
public MyOtherModel OtherModel{get;set;}
}
class MyOtherModel{
public string OtherName{get;set;}
}
< /code>

Теперь я хочу получить имя другого модели < /code>. Проблема: ASP.NET требует здесь шаблона BaseClass.ChildClass, поэтому в этом примере другие model.othername 
. Используя ту же логику, как выше: < /p>

Код: Выделить всё

public class MyController:Controller{
public IActionResult Test(MyModel model) {
ModelState.AddModelError(nameof(model.MyOtherModel.OtherName), "The Name field is required!");
}
}
< /code>

просто даст мне имя атрибута ребенка, так что в этом примере другое < /code>. Но мне нужно другое model.othername 
. Есть ли чистый способ получить это без строительства самой струны? < /p>

Это было бы возможно сделать что -то подобное: < /p>

string actionName = nameof(model.MyOtherModel) + "." + nameof(model.MyOtherModel.OtherName);
< /code>

Но не очень чистый и интуитивно понятный способ imho.

Подробнее здесь: https://stackoverflow.com/questions/412 ... modelerror
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • В чем разница между Enum ToString и nameof Enum в C#?
    Anonymous » » в форуме C#
    0 Ответы
    39 Просмотры
    Последнее сообщение Anonymous
  • Может ли оператор C# nameof ссылаться на свойство экземпляра без экземпляра?
    Anonymous » » в форуме C#
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Как получить nameof() переданного параметра внутри метода?
    Anonymous » » в форуме C#
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Можно ли использовать семантическую модель Roslyn для идентификации зависимости, введенной через nameof и использование
    Anonymous » » в форуме C#
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Почему модификатор доступа к члену имеет значение для nameof()?
    Anonymous » » в форуме C#
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»