Hallo,
eine gesamte Anleitung im Internet kennen ich leider nicht aber ich kann dir ein paar Tipps geben.
Ich persönlich finde SPA die nur noch mit JS arbeiten inakzeptabel eine Website muss auch ohne JS arbeiten.
Grundegeln gibt es 2 Ansätze
Bei Anfragen vom View übergibt am per JsonResult ein Model mit dem man dann Client seitig den View baut z.B. mit Knockout
Oder man übergibt gleich ein HtmlString. Diesen kann man dann mit jQuery einfach auf die Seite packen.
Ich persönlich übergebe fast immer ein HtmlString.
Ein Beispiel mit AngularJS und einer Index Seite. Ich erstelle 2 ActionResult
public ActionResult Index()
{
return View();
}
public ActionResult IndexPatrial()
{
return PartialView();
}
Im IndexPartial ist erst der gesamte Html Content. Wenn jemand die Website abruft wird dieses ganz normal übergeben. Sollte aber AngularJS schon laufen, fragt angularjs den IndexPartial ab und übergibt die Seite.
$routeProvider
//Honme
.when('/', { templateUrl: '/Home/IndexPatrial' })
;
Ich nutze eigentlich nur das Routing von AngularJS.
Noch ein Beispiel wie man das mit jQuery und JsonResult machen würde
//Anfrage per jQuery
$.getJSON('/Home/IndexJson/', model, function (data) {
$('#div').empty().html(data);
});
//MVC
public JsonResult IndexJson(Model model)
{
var htnlString = RenderRazorViewToString("IndexPartial", modelList);
return Json(htmlString, JsonRequestBehavior.AllowGet);
}
public string RenderRazorViewToString(string viewName, object model)
{
ViewData.Model = model;
using (var sw = new StringWriter())
{
var viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
var viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
viewResult.ViewEngine.ReleaseView(ControllerContext, viewResult.View);
return sw.GetStringBuilder().ToString();
}
}
Ich hoffe ich habe dir etwas geholfen
Gruß
Thomas