2014-02-15 99 views
2

我正在使用MVC應用程序。在我們的應用中。我們有一個獲取用戶詳細信息的表單(客戶詳細信息)。例如,溫和的,名字,姓氏,密碼等。 提交後,在控制器本身,我們驗證輸入的MailID是否已經被註冊。如果已經註冊意味着,返回相同的視圖並顯示一條錯誤消息。但是所有細節都出現在文本框中,但密碼文本框變爲空白。我想要輸入已經輸入的值的密碼文本框。在MVC提交後保留密碼文本框的值

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

回答

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" })