Wie kann ich auf den JavaScript-Wert zugreifen @URL.Action()
? etwas wie:
<script type="text/javascript">
function name(myjavascriptID)
{
jQuery("#list_d").jqGrid('setGridParam', { url: '@URL.Action("download file", "download", new { id = <myjavascriptID> })', page: 1 });
}
</script>
link.href
ich muss verwendenlink
. Vielen Dank!@URL.Action
@Url.Action
Ich mache etwas ziemlich Ähnliches, aber weniger ausführlich:
var myUrl = '@Url.Action("Solution","Partner")/' + myjavascriptID; $.ajax.load(myUrl); // or whatever
Wir können dies aufgrund des Routings tun, und letztendlich wird Url.Action mit Routenwörterbuchparametern in einen URI übersetzt, der wie folgt aussieht:
http://localhost:41215/Partner/Solution?myJavascriptID=7
Nur eine zweite Wahl, denn wie ein weiser alter Mann einmal sagte: "Es sind unsere Entscheidungen, Harry, die zeigen, was wir wirklich sind, weit mehr als unsere Fähigkeiten."
quelle
Sie können die Variablen wie unten gezeigt an einen beliebigen Link übergeben ...
var url = '@Html.Raw(@Url.Action("MethodName", "ControllerName"))' + '?id = ' + myjavascriptID
quelle
Ähnlich wie bei Brian Mains Antwort könnten Sie Ihre URL-Zeichenfolge formatieren, anstatt -1 durch Ihre Variable zu ersetzen. Wenn Sie also wie ich der Meinung sind, dass es besser ist, sie zu lesen. Bei der folgenden Antwort wird davon ausgegangen, dass Sie den
String
in dieser Antwort vorgeschlagenen Prototyp geändert haben :var url = unescape('@Url.Action("download file", "download", new { id = "{0}" })').format(myjavascriptID);
Der
unescape
Anruf ist notwendig, wenn Sie Ihre entschlüsseln möchten{0}
. Ich mag diese Alternative, weil es einfacher ist, mehrere Parameter aus JS-Variablen zu haben. Zum Beispiel:var url = unescape('@Html.Raw(Url.Action("Action", "Controller", new { id = "{0}", name = "{1}" }))').format(myID, myName);
Ich habe
Html.Raw
in meinem zweiten Beispiel hinzugefügt, um zu vermeiden, dass&
die URL-Zeichenfolge verwendet wird.quelle
Sie können den JavaScript-Code in C # folgendermaßen erstellen:
function fun(jsId) { var aTag = '<a href="@Html.Raw(@Url.Action("ActionName", "ControllerName", new { objectId = "xxx01xxx" }).Replace("xxx01xxx", "' + jsId + '"))">LINK</a>'; }
Hier ist der Code aus der Frage, die mit dieser Technik umgeschrieben wurde:
function name(myjavascriptID) { jQuery("#list_d").jqGrid('setGridParam', { url: '@Html.Raw(@URL.Action("download file", "download", new { id = "XXXmyjavascriptIDXXX" }).Replace("XXXmyjavascriptIDXXX", "' + myjavascriptID + '"))', page: 1 }); }
quelle
Sie können den folgenden URL-ähnlichen Code ersetzen
var jsUrl = '@Url.Action("action", "controller")'; // ## is the token var getUrl = jsUrl.replace('action', action).replace('controller', controller) $("#RenderPartial").load(getUrl);
quelle