Что не так с этим кодом:
<EditForm Model="@_InputMsgModel" OnValidSubmit="@SubmitText" id="inputText" >
<InputText @bind-Value="@_InputMsgModel.Msg" />
</EditForm>
Запустите этот код с указанным выше кодом:
@code {
InputMsgModel _InputMsgModel = new InputMsgModel();
private void SubmitText()
{
Console.WriteLine(_InputMsgModel.Msg);
}
public class InputMsgModel
{
public string Msg { get; set; } = "My new message";
}
}
Вы видите текст «Мое новое сообщение» в текстовом поле? Я верю, что вы делаете ... Все хорошо, и двусторонний механизм связывания работает хорошо. Теперь посмотрите HTML-код ... он все еще <input class="valid">
, который не отражает реального состояния текстового поля. Подумайте об этом ...
Обновление: Конечно, вы можете использовать следующее:
<EditForm Model="@_InputMsgModel" OnValidSubmit="@SubmitText" id="inputText" >
<input type="text" @bind-value="@_InputMsgModel.Msg" />
</EditForm>
Важное замечание: Ошибка "Имена атрибутов не могут ..." вызвана тем, что вы используетезаглавная "V" в @bind-Value
. Вы должны использовать нижний регистр: @bind-value
. Это связано с тем, что вы используете входной элемент «HTML-элемент» здесь, и он имеет атрибут value , а не атрибут Value . Но когда вы используете InputText Component , значение Capital в @bind-Value
относится к свойству Value, определенному в компоненте.