web-dev-qa-db-de.com

Übergeben dynamischer Javascript-Werte mit Url.action ()

Könnte jemand bitte sagen, wie dynamische Werte mit Url.action () übergeben werden.

So etwas wie,

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

vorname, Benutzername wird in der Url.action () -Methode nicht angezeigt.

Wie übergeben Sie diese dynamischen Werte mit Url.action ()?

51
Kokila

Die @Url.Action()-Methode ist proccess für den server-side, daher können Sie dieser Funktion keinen client-side-Wert als Parameter übergeben. Sie können die client-side-Variablen mit der von dieser Methode generierten server-side-URL verknüpfen, die eine Zeichenfolge in der Ausgabe ist. Versuchen Sie etwas so:

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

Die @Url.Action("Display", "Customer") wird mit dem server-side verarbeitet, und der Rest der Zeichenfolge wird mit dem client-side verarbeitet, wodurch das Ergebnis der server-side-Methode mit dem client-side verkettet wird.

107
Felipe Oriani

Diese Antwort ist möglicherweise nicht zu 100% relevant für die Frage. Aber es geht das Problem an ... Ich fand diesen einfachen Weg, um diese Anforderung zu erreichen. Code geht weiter:

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

Im obigen Beispiel ist {{cust.Id}} eine AngularJS-Variable. Man kann es jedoch durch eine JavaScript-Variable ersetzen.

Ich habe nicht versucht, mehrere Variablen mit dieser Methode zu übergeben, aber ich hoffe, dass bei Bedarf auch die URL angehängt werden kann.

3
Dash

In meinem Fall klappte es einfach mit folgenden Schritten:

Der Controller:

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

Erstellen Sie das Formular ohne Aktion:

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

Legen Sie das Schaltflächenereignis für das Senden fest, nachdem Sie die Aktion zum Formular hinzugefügt haben:

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

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

        btnSubmit.submit();
    });

Hoffe das hilft vatos!

0
Osvaldo Silva

Der einfachste Weg ist:

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