zu liefern Ich arbeite an einem MVC-Projekt, in dem jsrender verwendet wird. Dies ist mein erstes Mal mit jsrender arbeiten (in der Tat bin ich ziemlich neu bei Javascript und C# zu lol) und ich habe jetzt mit einem bestimmten Problem für einen ganzen Tag gekämpft.Verwenden Sie ein jsrender-Tag, um routevalue in @ Url.Action()
Ich habe folgende Javascript
$.post('@Url.Action("GetDocs","Place", new { placeID = Model.PlaceId})').done(
function (data) {
var template = $.templates("#doc-tmpl");
var htmlOut = template.render(data.documents);
$("#documentListContainer").append(htmlOut);
$(".docCount").html(data.count);
});
Dies wird alle Daten, die ich weiter unten für die Vorlage benötigen, aber ich brauche eine Url.Action() mit einem Stück der Daten zu erstellen.
<script id="doc-tmpl" type="text/x-jsrender">
<div class="col-md-4">
<h5>{{:Name}}{{:test}}</h5>
<p id="DocId" class="hidden"><br />{{:DocId}}</p>
<img src="data:image;base64,{{:FrontCoverImg}}" width="140" height="230" />
<a href="@Url.Action("DisplayPDF","Place", new { DocId = "{{:DocId}}" })">Link</a>
</div>
Ich brauche die docId aus den Daten in der Routevalues der @Url.Action("DisplayPDF","Place", new { docId = "{{:docId}}" })
zu liefern. Offensichtlich funktioniert das nicht im aktuellen Zustand.
Ich habe die jsrender Dokumentation und andere Q & A mit Jsrender und MVC zu tun, aber ich habe Probleme, meinen Kopf um den Weg, wie es funktioniert.
Eine Sache, an die ich gedacht habe, ist die @ Url.Action() innerhalb des Javascript zu erstellen und ein Tag zu verwenden, um es in der Vorlage zu öffnen, aber ich konnte nicht herausfinden, wie man den Daten hinzufügt aus der $ .post, um ein Tag dafür zur Verfügung zu stellen.
Edit: Was ich meine, aus dem obigen Absatz ist, zurückgegeben die Daten durch die Javascript/getDocs Beitrag ist so etwas wie:
documents": [
{
"DocId": "86f86a32-5005-456c-8dd1-c023a66dd794",
"Name": "How to...",
"FrontCoverImg": "Base64String(docImg)"
},
{
"DocId": "d29f8afc-3191-47f1-9b88-1de08582ba27",
"Name": "A Document",
"FrontCoverImg": "Base64String(docImg)"
}
],
"count": 2
}
, die dann in der Vorlage zu füllen ist eingerichtet. Ich hoffe, dass es eine Möglichkeit ist das @ Url.Action() Erklärung zu diesen Schlüssel/Wert-Paare, so etwas wie hinzufügen:
"viewdoc" : '@@Url.Action("DisplayPDF", "Place", new {DocId = ' + DocId + ', @@class = "btn btn-default" })';
(nicht sicher, ob die Syntax ist ziemlich genau dort), so konnte ich dann Setzen Sie {{:viewdoc}}
in die Vorlage.
Bin ich wenigstens auf dem richtigen Weg? lol
Wünschten Sie 'Link'? (Ich habe '' '' zu '' 'und' docId' zu 'DocId' geändert, da Sie' DocId' an anderer Stelle oben haben. – BorisMoore
yeah sollte wahrscheinlich DocId @BorisMoore sein –