web-dev-qa-db-fra.com

Passage de valeurs javascript dynamiques avec Url.action ()

Quelqu'un pourrait-il dire s'il vous plaît comment passer des valeurs dynamiques en utilisant Url.action ().

Quelque chose comme,

var firstname="abc";
var username = "abcd";
location.href = '@Html.Raw(@Url.Action("Display", "Customer", new { uname = firstname ,name = username}))';

prenom, nom d'utilisateur n'est pas signalé dans la méthode Url.action ().

Comment passer ces valeurs dynamiques en utilisant Url.action ()?

51
Kokila

La méthode @Url.Action() étant proccess sur le server-side, vous ne pouvez donc pas transmettre de valeur client-side à cette fonction en tant que paramètre. Vous pouvez concatter les variables client-side avec l'URL server-side générée par cette méthode, qui est une chaîne sur la sortie. Essayez quelque chose comme ça:

var firstname = "abc";
var username = "abcd";
location.href = '@Url.Action("Display", "Customer")?uname=' + firstname + '&name=' + username;

La @Url.Action("Display", "Customer") est traitée sur le server-side et le reste de la chaîne est traitée sur le client-side, concaténant le résultat de la méthode server-side avec le client-side.

107
Felipe Oriani

Cette réponse pourrait ne pas être à 100% pertinente pour la question. Mais cela règle le problème ... J'ai trouvé ce moyen simple de satisfaire à cette exigence. Le code va en dessous:

<a href="@Url.Action("Display", "Customer")?custId={{cust.Id}}"></a>

Dans l'exemple ci-dessus, {{cust.Id}} est une variable AngularJS. Cependant, on peut le remplacer par une variable JavaScript.

Je n’ai pas essayé de passer plusieurs variables avec cette méthode, mais j’espère que l’on pourra aussi l’ajouter à l’URL si nécessaire.

3
Dash

Dans mon cas, cela a bien fonctionné simplement en procédant comme suit:

Le controlle:

[HttpPost]
public ActionResult DoSomething(int custNum)
{
    // Some magic code here...
}

Créez le formulaire sans action:

<form id="frmSomething" method="post">
    <div>
        <!-- Some magic html here... -->
    </div>
    <button id="btnSubmit" type="submit">Submit</button>
</form>

Cliquez sur le bouton événement de clic pour déclencher l'envoi après avoir ajouté l'action au formulaire:

var frmSomething= $("#frmSomething");
var btnSubmit= $("#btnSubmit");
var custNum = 100;

btnSubmit.click(function()
    {
        frmSomething.attr("action", "/Home/DoSomething?custNum=" + custNum);

        btnSubmit.submit();
    });

J'espère que cela aide vatos!

0
Osvaldo Silva

Le moyen le plus simple est:

  onClick= 'location.href="/controller/action/"+paramterValue'
0
Umar Farooq Awan