Ответ 1
Вы должны использовать Html.Password
или даже лучше использовать Html.EditorFor
, который будет читать DataType.Password
и выводит ввод типа пароля для вас.
Html.TextBoxFor
- это текстовый ввод, а не как пароль.
Вместо непосредственного использования объекта в простом представлении Razor у меня есть форма, использующая в качестве объекта + s model
объект декоратора.
public class GlobalAccount
{
public GlobalAccount()
{
this.TestService = new TestServiceModel();
}
public TestServiceModel TestService { get; set; }
}
beeing TestServiceModel
представлен как
public class TestServiceModel
{
[Required]
[Display(Name = "Endpoint (url of your service like http://mydomain/remote/)")]
public string Endpoint { get; set; }
[Required]
[Display(Name = "System username")]
public string UserName { get; set; }
[Required]
[DataType(DataType.Password)]
[Display(Name = "System password")]
public string Password { get; set; }
}
Примечание свойство Password
, украшенное DataType.Password
а в Partial Razor view
у меня есть вызов этого объекта
@model OnlineServices.Administration.Models.GlobalAccount
...
@Html.TextBoxFor(model => model.TestService.Password, new { size = "30" })
проблема заключается в том, что в html
я получаю type="text"
вместо text="password"
Вы можете увидеть в это изображение весь поток:
Что я отсутствует здесь?
Вы должны использовать Html.Password
или даже лучше использовать Html.EditorFor
, который будет читать DataType.Password
и выводит ввод типа пароля для вас.
Html.TextBoxFor
- это текстовый ввод, а не как пароль.
В ответ на ответ Kieron в MVC3 на самом деле НЕ рекомендуется использовать Html.EditorFor для ввода пароля, по какой-то причине, если сервер возвращает страницу (например, комбинация паролей имени пользователя неверна), то с помощью редактора, пароль передается обратно на страницу (и источник просмотра - это видимый пароль)
При использовании Html.PasswordFor пароль не передается клиенту.