2013-06-29 3 views
-1

MVC3 razor- j'ai un modèle ci-dessous dans mon application web:comment passer dynamiquement la valeur par défaut à la zone de texte?

public class mymodel{ 

    [Display(Name = "name")] 
    public string Name { get; set; } 
} 

lorsque nous utilisons

@Html.LabelFor(m => m.Name) 

il utiliser l'affichage « nom », par exemple supérieur de notre zone de texte pour montrer utilisateur cette déposé est pour entrer votre nom. Comment puis-je utiliser le nom d'affichage dans la valeur de la zone de texte?

i test, mais la valeur est vide je veux obtenir la valeur de mon modèle de [Affichage (Name = "nom")]

@Html.TextBoxFor(m => m.Name, new {@Value = @Html.ValueFor(m => m.Name)}) 

Répondre

1
@Html.TextBoxFor(m => m.Name, new {Value = Html.DisplayNameFor(m => m.Name)}) 

EDIT: Si vous devez réafficher la forme et préserver la valeur que l'utilisateur est entré, vous pouvez soit utiliser l'approche de Darin, ou faire quelque chose comme ceci:

@Html.TextBoxFor(m => m.Name, new { Value = (string.IsNullOrWhiteSpace(Model.Name) ? Html.DisplayNameFor(x => x.Name).ToHtmlString() : Model.Name) }) 
0

Dans l'action du contrôleur rendu ce point de vue, vous pouvez définir la propriété Nom de votre modèle de vue:

public ActionResult Index() 
{ 
    var model = new MyViewModel(); 
    model.Name = ModelMetadata.FromLambdaExpression<MyViewModel, string>(x => x.Name, new ViewDataDictionary<MyViewModel>(model)).DisplayName; 
    return View(model); 
} 

et à votre avis:

@Html.LabelFor(x => x.Name) 
@Html.EditorFor(x => x.Name) 
Questions connexes