2012-05-28 15 views
6

mam ten poniższy kod:Jak mogę zwrócić json na częściowym widoku w MVC?

[HttpPost] 
public JsonResult Index2(FormCollection fc) 
{ 
    var goalcardWithPlannedDate = repository.GetUserGoalCardWithPlannedDate(); 
    return Json(goalcardWithPlannedDate.Select(x => new GoalCardViewModel(x))); 
} 

Ale chcę użyć go na PartialView zamiast tego, w jaki sposób można to zrobić?

+1

Czy chcesz wywołać go z częściowego widoku za pomocą kodu javascript? –

Odpowiedz

2

jeśli dobrze zrozumieć, co trzeba, można spróbować następujących

public JsonResult Index2(FormCollection fc) 
{ 
    var goalcardWithPlannedDate = repository.GetUserGoalCardWithPlannedDate(); 
    return Json(goalcardWithPlannedDate.Select(x => new GoalCardViewModel(x)), "text/html", JsonRequestBehavior.AllowGet); 
} 

Ważne jest, aby ustawić typ C zawartość bo JsonResult zastąpi zawartość całego rodzaju odpowiedzi, jeśli nazywają tę czynność przy użyciu Html.RenderAction. To nie jest dobre rozwiązanie, ale działa w niektórych przypadkach.

Zamiast tego można także spróbować lepsze rozwiązanie:

var scriptSerializer = new System.Web.Script.Serialization.JavaScriptSerializer(); 
var jsonString = scriptSerializer.Serialize(goalcardWithPlannedDate.Select(x => new GoalCardViewModel(x))); 

Następnie można zrobić wszystko, co chcesz z reprezentacją strun. Właśnie to robi wewnątrz niego. Przy okazji, z tym samym sukcesem możesz użyć dowolnego serializatora json.

Jeśli chcesz uzyskać do niego dostęp na kliencie. Nie musisz zmieniać kodu. W przypadku korzystania z jQuery:

$.post('<%= Url.Action("Index2") %>', { /* your data */ }, function(json) { /* actions with json */ }, 'json') 

Jeśli chcesz przekazać je do widoku modelu następnie:

[HttpPost] 
public ActionResult Index2(FormCollection fc) 
{ 
    var goalcardWithPlannedDate = repository.GetUserGoalCardWithPlannedDate(); 
    return PartialView(new MyModel { Data = goalcardWithPlannedDate.Select(x => new GoalCardViewModel(x)) }); 
} 
0

Można również zwrócić się częściowy widok Zamiast JSON.

[HttpPost] 
public ActionResult Index2(FormCollection fc) 
{ 
    var goalcardWithPlannedDate = repository.GetUserGoalCardWithPlannedDate(); 
    return PartialView(goalcardWithPlannedDate.Select(x => new GoalCardViewModel(x))); 
} 
Powiązane problemy