Ich benutze ASP.NET MVC 3 und den Helfer @ Html.Raw aus meiner Sicht.ASP.NET MVC3 Html.Raw ändern absolute URLs?
Ich übergebe es einige HTML-Markup, die ich in einer Datenbank gespeichert habe. Das Markup enthält einige URLs, die auf andere Orte auf meiner Website verweisen. Zum Beispiel http://www.foo.fom/events. Bei diesen Daten handelt es sich um Forumsbeiträge. Die Seite, auf der sie angezeigt werden, hat das Format http://www.foo.com/forums/thread/42/slug. Dies geschieht nur für URLs auf meiner Website
http://www.foo.com/forums/thread/42/events/
:
Wenn jedoch die Seite gerendert wird, werden die gespeicherten URLs in modifizierter Form als gerendert. Wenn die URL auf eine externe Site verweist, ist sie unverändert.
Ich habe überprüft, dass was ich in @ Html.Raw übergebe, ist die richtige URL (http://www.foo.com/events). Warum wird es geändert, wenn die Seite gerendert wird? Gibt es eine einfache Möglichkeit, diese "Funktion" zu deaktivieren?
Hier ist mein Code zum Anzeigen der Markup:
<div>
@Html.Raw(post.Body)
</div>
und hier ist der Controller-Code, der die Seitendaten genrates:
var post = _forumRepository.GetPostById(id)
var model = new ForumPostView()
{
Body = post.Body,
PostDate = post.DatePosted,
PostedBy = post.Author,
PostId = post.Id
};
return View(model);
ich über Debugger, der in der Post die genaue URL überprüft haben. Der Körper, bevor er an die Ansicht zurückgegeben wird, hat die Form "http://www.foo.com/events" (kein abschließender Schrägstrich). Ich habe auch über Debugger überprüft, dass der Wert unverändert ist, bevor es in @ Html.Raw übergeben wird.
Zeig uns deinen eigentlichen Code. Html.Raw macht keine URL-Neuzuordnung, also ist es etwas anderes, das es tut. –
Wie @Mystere bemerkt, manipuliert 'Html.Raw' Ihre Daten nicht. Bitte zeigen Sie uns den genauen Inhalt von 'post.Body' - vielleicht schreiben Sie es in eine Datei, damit wir genau wissen, was diese Daten sind. –
Das ist etwas merkwürdig. Wie stellen Sie aus Ihrer Sicht "Post" ein? Sollte das Model.Body nicht sein? –