textarea asp-for не отображает свойство - PullRequest
0 голосов
/ 06 июня 2018

Я работал над небольшим школьным проектом и решил использовать ядро ​​.net (MVC) впервые.У меня есть маленькая кнопка, которую я могу нажать, которая выполняет команду «ipconfig» в фоновом режиме и отображает вывод в текстовой области.Сначала мой партнер по команде использовал только

public string Result;

в ViewModel для представления.В представлении оно отображается через

<textarea asp-for="Result"></textarea>

Поэтому я решил превратить его в свойство со значением по умолчанию get и set:

public string Result { get; set; }

Но когда я это сделаю, вывод непоявится в текстовой области, если я сохраню тот же подход в представлении, что и член моей команды, когда он использовал поле вместо свойства.Вместо этого я должен сделать это следующим образом, чтобы оно появилось в текстовой области:

<textarea>@Model.Result</textarea>

Теперь я спрашиваю себя, почему это происходит.Я не могу отобразить свойства с asp-for?И что было бы лучше использовать, поле или свойство в качестве результата?

Заранее большое спасибо!

1 Ответ

0 голосов
/ 06 июня 2018

Вы на самом деле должны использовать свойства, и если <textarea>@Model.Result</textarea> работает, то <textarea asp-for="Result"></textarea> также должно работать.Единственная причина, по которой это не произойдет, заключается в том, что ModelState имеет другое значение для Result (поскольку последняя форма на самом деле использует ModelState, тогда как первая явно использует Model напрямую).

ModelState состоит из значений Request, ViewData / ViewBag и, наконец, Model, например, если вы сделаете что-то вроде ViewBag.Result = String.Empty, это на самом деле переопределит значение из Model in ModelState.

Здесь недостаточно кода, чтобы по-настоящему диагностировать точную проблему, но я бы искал другие места, где вы могли бы использовать «результат» (без учета регистра).Если вы принимаете это как параметр запроса или устанавливаете элемент ViewBag и т. Д., Это ваша проблема.

...