2010-05-25 7 views
0

Je suis en train de construire une petite ASP.NET MVC 2 application.I ont une classe de contrôleur avec la méthode ci-dessous ilASP.NET MVC 2.0: Comment lire la valeur querystring

public ActionResult Index() 
    { 
     TestMvc.Models.PersonalInformation objPerson = new TestMvc.Models.PersonalInformation(); 
     objPerson.FirstName = "Shyju"; 
     objPerson.LastName = "K"; 
     objPerson.EmailId="[email protected]"; 
     return View(objPerson); 
    } 

Et lorsque la page (Voir) étant appelé, je peux voir ces données là comme mon affichage a l'affichage de ces données. Maintenant, je veux savoir comment puis-je passer une chaîne de requête dans l'URL et utiliser cet ID pour créer l'objet PersonalInformation.Hoe puis-je lire la valeur de chaîne de requête? Où lire?

Je veux que le quesrtstring soit comme http://www.sitename/user/4234 où 4234 est l'ID utilisateur

+0

Si vous avez vraiment besoin de soumettre certaines données en utilisant querystring, vous avez changé l'action du formulaire en "Get" (pas de post). Et sur le public ActionResult Index() vous pouvez vérifier si Request.QueryString ["YourField"]! = Null. Mais je préfère utiliser RouteData.Values ​​dans votre scénario –

Répondre

3

http://www.sitename/user/4234 est pas un querystring. Le querystring est la partie de l'URL qui vient après le?, Comme dans http://www.sitename/user?userId=42

Cependant, les routes par défaut qui viennent avec le modèle de projet MVC devrait vous permettre de changer simplement la signature de votre méthode d'action pour

public ActionResult Index(int id) 

et vous devriez obtenir le résultat souhaité. Vous devriez regarder comment le routage fonctionne dans MVC si vous voulez un contrôle total de vos URL.

Notez également que l'action d'index est généralement utilisée pour afficher une liste de tous les objets. Par conséquent, vous souhaitez probablement que l'action Détails affiche 1 objet utilisateur.

+1

@Shyju: à Jonas l'échantillon 4234 peut être obtenu en utilisant RouteData.Values ​​["Id"] –

0

Ce que vous voulez est de modifier votre action pour accepter un identifiant comme ceci:

public ActionResult Index(string id) 
{ 
    TestMvc.Models.PersonalInformation objPerson = new TestMvc.Models.PersonalInformation(); 
    if (!string.isNullOrEmpty(id)) 
    { 
    objPerson = getPerson(id); 
    } 

    return View(objPerson); 
} 

ajouter ensuite un itinéraire vers votre global.asax:

routes.MapRoute(
    "MyRoute",            // Route name 
    "user/{id}",       // URL with parameters 
    new { controller = "mycontroller", action = "index", id = ""} // Parameter defaults 
);