ASP.NET MVC Supprimer la chaîne de requête dans la méthode d'action
J'ai une méthode d'action qui ressemble à ceci:
public ActionResult Index(string message)
{
if (message != null)
{
ViewBag.Message = message;
}
return View();
}
Ce qui se passe, c'est que l'url d'une demande à cet ressemblera:
www.mysite.com/controller/?message=Hello%20world
Mais je veux qu'il à l'air juste
www.mysite.com/controller/
Est-il un moyen de supprimer la chaîne de requête à l'intérieur de la actionmethod?
vous dites que vous voulez de message par défaut, lorsqu'ils n'entrent pas dans une chaîne de requête? Ou que vous souhaitez masquer le querystring quel que soit le type de message envoyé sur l'url d'abord?
La seconde, fondamentalement, je veux traiter le message (il peut être n'importe quoi) et ne pas l'afficher sur l'url.
La seconde, fondamentalement, je veux traiter le message (il peut être n'importe quoi) et ne pas l'afficher sur l'url.
OriginalL'auteur willvv | 2012-03-12
Vous devez vous connecter pour publier un commentaire.
Pas, à moins d'utiliser la méthode POST, les informations sont transmises, en quelque sorte. Une alternative peut être d'utiliser un entre-deux de la classe.
Ou. si vous avez simplement utilisé un POST
Est-ce toujours la meilleure solution? J'ai une page afficher uniquement à certaines heures, et il faut un modèle, mais cette action n'est pas accessible au public et je veux qu'il ait une jolie URL comme /Inscription/AfterHours et pas /Inscription/AfterHours?DateTime...[fou caractères]. Peu importe, cela ne fonctionne pas.
OriginalL'auteur naspinski
Je ne suis pas sûr que vous pensez vraiment que les à travers. Si vous supprimez la chaîne de requête... ensuite, vous enlevez la chaîne de requête.. c'est à dire, votre page ne sera pas la valeur de chaîne de requête à faire tout ce qu'il doit faire.
Il y a un tas de différents hacks que vous pourriez faire.. tous ne sont pas idéales. Vous pouvez utiliser javascript pour la bande de la chaîne de requête. Vous pourriez vous rediriger vers une querystring-moins de page après la définition d'une variable de session.. c'est assez laid.
Rappelez-vous que ce que voit l'utilisateur dans la barre d'adresse est sur le client. Le client contrôles. Vous pouvez jouer avec elle via javascript, mais le faire est généralement une mauvaise idée. Depuis cacher des choses à l'utilisateur peut être considéré comme malveillant comme comportement.
OriginalL'auteur Erik Funkenbusch
Regarder dans itinéraires. Ils définissent comment une url avec des paramètres doivent être écrites.
Si vous créez une nouvelle application MVC, et de regarder le Mondial.asax.cs fichier sous " RegisterRoutes(). vous devriez voir une entrée.
Regarder chaque partie:
example.org/home/index?id=2
sera écritexample.org/home/index/2
au lieuAinsi que l'itinéraire le faire donc si vous allez à example.org il suppose que vous voulez dire example.org/home/index{id est facultatif}.
De travail, vous pouvez commencer à voir comment créer vos propres itinéraires.
Maintenant, répondre à votre question, la réponse courte est oui vous pourriez faire de l'URL de l'air comme ça, mais pas vraiment. Vous devez définir une route par défaut avec un message, et il ne le regardez comme ça, si quelqu'un n'a pas de spécifier un message. Vous devez indiquer au contrôleur quel est le message. Je suis désolé, mais le meilleur que vous pouvez faire est de définir un itinéraire qui vous donne
/message/Hello%20World
et l'aide de la chaîne.remplacez faire que regarder encore plus agréable `/message/hello_world'si vous lisez l'ensemble de ma réponse, vous verrez que j'ai l'adresse qu'
OriginalL'auteur Joe
Je recommande l'utilisation d'une limace. Découvrez ce post: SOF Slug post
Dans les précédentes applications, j'ai pris cette approche pour supprimer querystrings à partir de l'URL.
OriginalL'auteur JoshYates1980