在MVC中提交后保留密码文本框值

时间:2014-02-15 06:01:21

标签: asp.net-mvc passwords

我正在使用MVC应用程序。在我们的应用程序我们有一个表单,用于获取用户的详细信息(客户端详细信息)。示例,温和,名字,姓氏,密码等。 提交后,在Controller本身,我们验证输入的MailID是否已经注册。如果已经注册,则返回相同的视图,并显示错误消息。但所有细节都显示在文本框中,但密码文本框变为空。我想要密码文本框,其值已经输入。

public string Email { get; set; }

    [Required(ErrorMessage = "FirstName is required")]
    public string FirstName { get; set; }

    public string LastName { get; set; }

    [Required(ErrorMessage = "Password is required")]
    [DataType(DataType.Password)]
    [StringLength(40, MinimumLength = 6,
    ErrorMessage = "Password must be between 6 and 12 characters.")]
    public string Password { get; set; }

1 个答案:

答案 0 :(得分:6)

这是Html.PasswordHtml.PasswordFor助手的设计,不幸的是它无法更改,因为它在助手本身中是硬编码的:

public static MvcHtmlString PasswordFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, IDictionary<string, object> htmlAttributes)
{
    if (expression == null)
    {
        throw new ArgumentNullException("expression");
    }
    object obj2 = null;
    IDictionary<string, object> dictionary = htmlAttributes;
    return PasswordHelper(htmlHelper, ModelMetadata.FromLambdaExpression<TModel, TProperty>(expression, htmlHelper.ViewData), ExpressionHelper.GetExpressionText(expression), obj2, dictionary);
}

在那边看到object obj2 = null;

如果您想更改此行为,可以使用TextBoxFor帮助程序生成密码字段:

@Html.TextBoxFor(x => x.Password, new { type = "password" })