如何将JSON对象传递给操作

时间:2012-05-28 12:44:04

标签: json asp.net-mvc-3 model-view-controller jquery

我在MVC3的View中有以下jQuery代码。我想在div(OffshoreECore)中加载部分视图(名为#Form),具体取决于在success函数中传递的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 个答案:

答案 0 :(得分:2)

load()的第二个参数是data,它应与请求一起发送到指定的URL。要发送您的JSON字符串,请尝试以下方法:

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

您的示例代码也缺少来自'中第二个键的inputParamtrs分隔符和来自$中选择器的success,但我猜他们只是错字。

答案 1 :(得分: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;
    }