2013-11-24 7 views
0

Я хочу передать JsonResult в partialView, я могу вернуть JsonResult в обычный режим просмотра, но не знаю, как его можно передать на частичный просмотр. JsonResult который передается к нормальному виду являетсяКак передать JsonResult в PartialView в asp.net mvc

public JsonResult Search(int id) 
{ 
    var query = dbentity.user.Where(c => c.UserId == id); 
    return Json(query,"Record Found"); 
} 

но хочет знать, как это наклоняется быть возвращено частичным видом, такими как

public JsonResult Search(int id) 
{ 
    var query = dbentity.user.Where(c => c.UserId == id); 
    return PartialView(query,"Record Found"); 
} 
+0

По определению, ваш код 'вернуть PartialView (запрос, "Запись Found")' содержит 2 аргументы, первое должно быть именем представления, второе должно быть типом модели. Есть еще два метода перегрузки, которые содержат либо модель, либо имя вида. – Twocode

+0

Действие контроллера может возвращать только один результат действия. Какова ваша цель? –

+0

Я хочу вернуть JsonResult для частичного просмотра чего-то вроде возврата Json (PartialView, query) – user3026519

ответ

1

Использования действие:

public ActionResult Search(int id) 
{ 
    var query = dbentity.user.Where(c => c.UserId == id); 
    return PartialView(query); 
} 

И на виду конвертировать Модель в объект Json

<script> 
var model = @Html.Raw(Json.Encode(Model)) 
</script> 
0

Основываясь на ваш комментарий

Я хочу вернуться к JsonResult PartialView что-то вроде возвращения Json (PartialView, запрос) - user3026519 24 '13 ноя в 10:40

Я предполагаю, что вы хотите вернуть JSon результат, содержащий рендер частично? При этом вы можете использовать метод create helper для преобразования представления в строку, а затем передать его в результат Json. Ниже приводится возможное решение:

Ваш вспомогательный метод:

/// <summary> 
/// Helper method to render views/partial views to strings. 
/// </summary> 
/// <param name="context">The controller</param> 
/// <param name="viewName">The name of the view belonging to the controller</param> 
/// <param name="model">The model which is to be passed to the view, if needed.</param> 
/// <returns>A view/partial view rendered as a string.</returns> 
public static string RenderViewToString(ControllerContext context, string viewName, object model) 
{ 
    if (string.IsNullOrEmpty(viewName)) 
     viewName = context.RouteData.GetRequiredString("action"); 

    var viewData = new ViewDataDictionary(model); 

    using (var sw = new StringWriter()) 
    { 
     var viewResult = ViewEngines.Engines.FindPartialView(context, viewName); 
     var viewContext = new ViewContext(context, viewResult.View, viewData, new TempDataDictionary(), sw); 
     viewResult.View.Render(viewContext, sw); 

     return sw.GetStringBuilder().ToString(); 
    } 

Вызов действия:

public ActionResult Search(int id) 
{ 
    var query = dbentity.user.Where(c => c.UserId == id); 
    return Json(RenderViewToString(this.ControllerContext, "Search", query)); 
} 
Смежные вопросы