Ich versuche, Controller-Aktionen zu erstellen, die entweder JSON oder teilweise html je nach einem Parameter zurückgeben wird. Was ist der beste Weg, um das Ergebnis asynchron an eine MVC-Seite zurückzugeben?
Antworten
Zu viele Anzeigen?Alternative Lösung mit Inkodierungsrahmen
Aktion Rückgabe json
Controller
[HttpGet]
public ActionResult SomeActionMethod()
{
return IncJson(new SomeVm(){Id = 1,Name ="Inc"});
}
Rasierapparat Seite
@using (var template = Html.Incoding().ScriptTemplate<SomeVm>("tmplId"))
{
using (var each = template.ForEach())
{
<span> Id: @each.For(r=>r.Id) Name: @each.For(r=>r.Name)</span>
}
}
@(Html.When(JqueryBind.InitIncoding)
.Do()
.AjaxGet(Url.Action("SomeActionMethod","SomeContoller"))
.OnSuccess(dsl => dsl.Self().Core()
.Insert
.WithTemplate(Selector.Jquery.Id("tmplId"))
.Html())
.AsHtmlAttributes()
.ToDiv())
Aktion zurück html
Controller
[HttpGet]
public ActionResult SomeActionMethod()
{
return IncView();
}
Rasierapparat Seite
@(Html.When(JqueryBind.InitIncoding)
.Do()
.AjaxGet(Url.Action("SomeActionMethod","SomeContoller"))
.OnSuccess(dsl => dsl.Self().Core().Insert.Html())
.AsHtmlAttributes()
.ToDiv())
Vielleicht möchten Sie einen Blick auf diesen sehr hilfreichen Artikel werfen, der dies sehr gut behandelt!
Ich dachte nur, es könnte Leuten helfen, die nach einer guten Lösung für dieses Problem suchen.
http://weblogs.asp.net/rashid/archive/2009/04/15/adaptive-rendering-in-asp-net-mvc.aspx
PartialViewResult und JSONReuslt erben von der Basisklasse ActionResult. Wenn also der Rückgabetyp dynamisch festgelegt wird, wird die Methodenausgabe als ActionResult deklariert.
public ActionResult DynamicReturnType(string parameter)
{
if (parameter == "JSON")
return Json("<JSON>", JsonRequestBehavior.AllowGet);
else if (parameter == "PartialView")
return PartialView("<ViewName>");
else
return null;
}
Für Leute, die auf MVC 3 aufgerüstet haben, gibt es eine gute Möglichkeit MVC3 und Json verwenden