Model does not apply DataType.Password

2019-02-21 10:39发布

Instead of using the object directly, on a simple Razor View I have a form using as it+s model a decorator object.

public class GlobalAccount
{
    public GlobalAccount()
    {
        this.TestService = new TestServiceModel();
    }

    public TestServiceModel TestService { get; set; }
}

beeing TestServiceModel represented as

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; }
}

Note the Password property decorated with DataType.Password

and in a Partial Razor view I have a call to that object

@model OnlineServices.Administration.Models.GlobalAccount
...
@Html.TextBoxFor(model => model.TestService.Password, new { size = "30" })

problem is that, in the html I get type="text" instead of text="password"

You can see in this image the entire flow:

enter image description here

What am I missing here?

2条回答
Bombasti
2楼-- · 2019-02-21 10:50

Further to Kieron's answer, in MVC3 it is actually NOT better to use Html.EditorFor for the Password inputs, as for some reason, if the server returns the page (say the username password combo is incorrect) then with EditorFor, the password is transmitted back to the page (and a view source the password is visible)

When using the Html.PasswordFor the password is not transmitted back to the client.

查看更多
相关推荐>>
3楼-- · 2019-02-21 11:07

You should use Html.Password, or even better use Html.EditorFor which will read the DataType.Password and output a password type input for you.

The Html.TextBoxFor is just text based input, not as password based one.

查看更多
登录 后发表回答