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)) });
}
Czy chcesz wywołać go z częściowego widoku za pomocą kodu javascript? –