Modèle de liaison et requêtes GET?
-
12-09-2019 - |
Question
Il y a des tonnes d'exemples pour le modèle de liaison dans les formulaires html, mais je me demande s'il est possible, et si oui comment, modèle d'utilisation obligatoire pour ActionLinks / requêtes GET.
Alors, étant donné le modèle suivant
public class Lurl
{
public string Str {get;set;}
public char Chr {get;set;}
public double Dbl {get;set;}
}
et l'itinéraire suivant (je ne sais pas comment cela serait formé, je vous présente pour montrer comment je voudrais l'URL présente les propriétés Str, Chr et DBL)
routes.MapRoute(
"LurlRoute",
"Main/Index/{str}/{chr}/{dbl}",
new
{
controller = "Main",
action = "Index",
lurl = (Lurl)null
}
);
Je voudrais l'utiliser de cette façon dans mon contrôleur
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Index(Lurl lurl)
{
/* snip */
}
et de cette façon dans ma page (deux options possibles,? Sont là plus)
<div class="links">
<%Html.ActionLink("Link one", "Index", new { lurl = Model })%><br />
<%Html.ActionLink("Link two", "Index",
new { str = Model.Str, chr = Model.Chr, dbl = Model.Dbl })%>
</div>
Est-ce possible avec l'infrastructure de liaison de modèle? Et si oui, ce qui doit être fait à mes échantillons pour les faire travailler?
La solution
Je pense que vous aurez à choisir soit la classe comme une approche de paramètre
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Index(Lurl lurl)
{
/* snip */
}
ou les propriétés à l'approche des paramètres
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Index(string str, char chr, double dbl)
{
/* snip */
}
... mais dans la classe comme une approche de paramètre, vous pouvez utiliser la méthode « UpdateModel ». Vous pouvez passer dans une liste blanche des paramètres que vous souhaitez mettre à jour avec cette méthode juste au cas où vous ne souhaitez que mettre à jour quelques valeurs dans votre modèle.
En outre, dans votre MapRoute, ce paramètre sera lurl carte dans votre chemin d'itinéraire? Je suis assez sûr qu'il doit y avoir un à de corrélation directe là.
Autres conseils
Vous pouvez également utiliser un modèle de liaison personnalisée . Lire aussi cette .