2012-05-28 3 views
1

У меня есть следующий код jQuery в представлении в MVC3. Я хочу загрузить частичный вид (с именем OffshoreECore) в div (#Form) в зависимости от объекта JSON, переданного в функции успеха. Вот код:Как передать объект JSON в действие

var inputParamtrs = { 'HeadId': $('#ExpenseId').val(), MProjid': $('#MProjid').val() }; 
$.ajax({ 
    type: "POST", 
    url: "/Expenses/Edit", 
    data: inputParamtrs, 
    success: function (json) { 
     ('#Form').load('@Url.Action("OffShoreECore", *What comes here ?!?*)'); 
    } 

Спасибо.

ответ

2

Второй параметр load() - это data, который должен быть отправлен указанному URL вместе с запросом. Для того, чтобы отправить строку JSON, попробуйте следующее:

success: function (json) { 
    $('#Form').load('@Url.Action("OffShoreECore")', json); 
} 

Вы пример кода также отсутствует ' разделителя из второго ключа в inputParamtrs и $ из селектора в success, но я предполагаю, что они просто опечатки.

+0

Спасибо за ответ Рори. Тем не менее, я попробовал, и он, похоже, не работает! – PabloB

+0

ОК .. это была опечатка .. теперь она работает отлично! Спасибо, Рори! – PabloB

0
$.getJSON("/Expenses/Edit", 
    { 
     HeadId: $('#ExpenseId').val(), 
     MProjid: $('#MProjid').val() 
    }, 
    function (data) { 
     elementForResult.innerHTML = data; 
    }); 

В контроллере:

public JsonResult Edit(int HeadId, int MProjid) 
    { 
     ... 
     var result = SerializeControl("~/Views/Expenses/Edit.cshtml", null); 
     return Json(result, JsonRequestBehavior.AllowGet); 
    } 

private string SerializeControl(string controlPath, object model) 
    { 
     var control = new RazorView(ControllerContext, controlPath, null, false, null); 
     ViewData.Model = model; 
     var writer = new HtmlTextWriter(new StringWriter()); 
     control.Render(new ViewContext(ControllerContext, control, ViewData, TempData, writer), writer); 
     string value = writer.InnerWriter.ToString(); 
     return value; 
    } 
Смежные вопросы