2009-09-25 8 views
0

J'ai une zone de texte à l'intérieur d'un formulaire.liaison de modèle dans mvc

[Voir]

<%=html.textbox("name") %> 

[contrôleur]

Index(string name) 
    { 
    name = "something"; 
    return View(); 
    } 

Sur Envoi de formulaire Dans ce cas, sans envoyer de ViewData la valeur saisie est maintained.But la valeur "quelque chose" n'est pas mise en haut

Mais WHN je change l'action à [contrôleur]

Index() 
{ 
string name="something"; 
return view(); 
} 

la valeur est maintenue.

Vraiment wat passe sur ce paramètre.

+4

Ce code ne compilera pas, et cela n'a aucun sens pour moi en tant que pseudocode. Cela aiderait si vous montriez le code que vous utilisez. –

Répondre

0

Si vous souhaitez définir des données pour Html.TextBox (« nom ») dans l'utilisation du contrôleur ViewData [ « nom »] = « quelque chose »

0

Votre question n'est pas très claire et votre exemple de code n'est pas réellement ajouter quelque chose à ViewData ou au modèle de vue - voici une photo de ce que je pense que vous essayez de faire ...

En supposant que vous vouliez remplir à nouveau le formulaire et que votre vue soit fortement typée, vous feriez quelque chose comme ceci:

public ActionResult Index(String name) 
{ 
    MyModel model = new MyModel; 
    model.Name = name; 
    ViewData.Model = model; 
    return View(); 
} 

Une zone de texte dans votre vue avec le même nom serait alors la valeur auto peuplée du modèle

<%= html.textbox("Name") %> 

l'affichage de la forme serait alors poster l'objet modèle à votre contrôleur comme ceci:

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Index(MyModel model) 
{ 
    // do something with the model   
    ViewData.Model = model; 
    return View(); 
} 

puis re-remplir le formulaire avec les données de modèle .

0

nom de chaîne dans votre action d'index dans le contrôleur, est mappé à FormValue, si vous modifiez cela, MVC comprend qu'il doit ajouter la valeur de FormValueCollection à la zone de texte, et vous avez modifié cela dans votre action Index . Si vous déclarez une variable par vous-même, cela ne fonctionne pas car il n'y a pas de liaison avec les valeurs de formulaire.

+0

mais quand je change la valeur dans l'action je ne reflète pas dans la vue. dans le cas Index (nom de la chaîne) { name = "somethng"; retour vue(); } mais la chaîne "somethng" ne reflète pas dans la vue .. – Santhosh