【问题标题】:How to pass a JSON object to an action如何将 JSON 对象传递给操作
【发布时间】:2012-06-02 20:03:03
【问题描述】:

我在 MVC3 的视图中有以下 jQuery 代码。我想根据成功函数中传递的 JSON 对象在 div (#Form) 中加载部分视图(名为 OffshoreECore)。代码如下:

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 ?!?*)');
    }

谢谢。

【问题讨论】:

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


    【解决方案1】:

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

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

    您的示例代码还缺少inputParamtrs 中第二个键中的' 分隔符和success 中选择器中的$,但我猜它们只是拼写错误。

    【讨论】:

    • 感谢罗里的回复。但是,我已经尝试过了,它似乎不起作用!
    【解决方案2】:
    $.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;
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-22
      • 2011-01-30
      • 1970-01-01
      • 2015-10-06
      • 1970-01-01
      • 2018-07-17
      • 1970-01-01
      • 2016-12-21
      相关资源
      最近更新 更多