2009-04-21 8 views
0

J'ai essayé les travaux suivants, mais ne marche pas:asp.net mvc: Comment passer un type anonyme à UserController?

<%Html.RenderPartial("userControl",new {personID=Model.ID, name="SomeName"});%> 

Dans le usercontrol j'ai un champ caché sous une forme ajax auquel j'attribue personID. Il ne compilera pas, l'identifiant caché n'est pas reconnu.

Répondre

1

Vous devez utiliser la réflexion ou une classe auxiliaire comme RouteValueDictionary si vous souhaitez obtenir la propriété correcte du type anonyme.

RouteValueDictionary est probablement le plus simple. Créez une instance en transmettant le modèle, puis utilisez son opérateur d'index pour interroger les valeurs.

Par exemple:

<% 
    var modelDictionary = new RouteValueDictionary(Model); 
%> 
<input type="hidden" name="personID" value="<%= modelDictionary["personID"] %>" /> 
1

Je ne sais pas pourquoi voudriez-vous faire cela, mais voici comment (typer modèle est beaucoup mieux):

<% 
    ViewData["PersonID"] = Model.ID; 
    ViewData["Name"] = "SomeName"; 
    Response.Write(
     Html.RenderPartial("userControl")); 
%> 

OU

Si vous venez de le faire:

<%=Html.RenderPartial("userControl")%> 

et si votre "userControl" est également fortement typé, il devrait être capable de lire "Model.ID"

Questions connexes