При неудачном входе в систему я хотел бы сохранить поле имени пользователя. У меня есть объект ViewModel под названием «пользователь», который содержит строку Имя пользователя
public class User
{
public bool RememberMe { get; set; }
public string Username { get; set; }
}
Эта информация передается в метод контроллера через
login( User user )
{
… validate user
if (!valid)
{
ModelState.AddModelError("", "Login name or password is incorrect!");
return View(user);
}
}
Я подтвердил, что имя пользователя существует в объекте пользователя, возвращаемом в представление.
Теперь в представлении у меня есть это:
@model Myapp.Models.User
<label class="form-label" for="form-signin-username">Username</label>
<input data-bind="value: loginViewModel.Username" class="form-control" id="form-signin-username" name="username" type="text" required="" placeholder="Username">
JavaScript такой:
var LoginViewModel = function () {
self.UserName = ko.observable();
self.Password = ko.observable();
self.Authenticate = function (event) {
var data = {
UserName: self.UserName(),
Password: self.Password()
}
xhr = $.ajax({
data: data,
dataType: 'JSON',
type: "POST",
url: "/Home/Login",
success: function (data) {
if (data.Success) {
// process successful login ( this works)
}
else
{
// this is what doesn't work
self.UserName = data.Username;
}
}
}
}
Кто-нибудь может понять, почему это текстовое поле не заполняется автоматически с помощью предыдущего имени пользователя?