Asp.net mvc 3 ASP.NET MVC 3.0使用部分操作和jQuery ajax更新表单的元素内容/html

Asp.net mvc 3 ASP.NET MVC 3.0使用部分操作和jQuery ajax更新表单的元素内容/html,asp.net-mvc-3,jquery,Asp.net Mvc 3,Jquery,我在部分A中有部分A1 我需要在按钮A1B单击上渲染我的局部视图A1 为此,我有一个局部视图操作,其参数类型为局部视图A(因为对A有一些依赖关系) 我有onclick函数来调用我的A1Partialpartial操作: $(document).ready(function () { $("#A1B").click(function () { dataString = $("#myForm").serialize(); $.ajax({

我在部分
A
中有部分
A1

我需要在按钮
A1B
单击上渲染我的局部视图
A1

为此,我有一个局部视图操作,其参数类型为局部视图
A
(因为对
A
有一些依赖关系)

我有onclick函数来调用我的
A1Partial
partial操作:

$(document).ready(function () {
    $("#A1B").click(function () {

        dataString = $("#myForm").serialize();

        $.ajax({
            type: "POST",
            url: "/Controller/A1Partial",
            data: dataString,
            dataType: "json",
            success: function (data) { 
                            //not working here

                            $("#myDiv").html("");
                $("#myDiv").html(data); 
            }

        });

        return false;
    });
});
我从jQueryAjax发出的调用工作正常,数据字符串在控制器中得到反序列化,没有任何问题

但是我在
$(“#myDiv”)中没有得到任何东西看起来html没有通过


我需要做哪些更改才能使其正常工作?

您表示希望使用JSON响应类型:

dataType: "json"
但您尝试将其当作HTML使用:

$('#myDiv').append(data);

因此,从AJAX请求中删除此
数据类型:“json”
,在成功回调中,数据变量将表示
A1Partial

返回的HTML。您必须在服务器上呈现部分视图,然后通过json发送HTML结果,如下所示:

public static class Renders
{
    public static string RenderPartialView(this Controller controller, string viewName, object model)
    {
        if (string.IsNullOrEmpty(viewName))
            viewName = controller.ControllerContext.RouteData.GetRequiredString("action");

        controller.ViewData.Model = model;
        using (var sw = new StringWriter())
        {
            ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(controller.ControllerContext, viewName);
            var viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, sw);
            viewResult.View.Render(viewContext, sw);

            return sw.GetStringBuilder().ToString();
        }
    }
}
在控制器中:

public JsonResult A1Partial(A model)
{
    //Getting my deserialized model here successfully

    //doing changes in the model collections

    return Json(new
    {
        Html = this.RenderPartialView("A1Partial", model)
    }, JsonRequestBehavior.AllowGet);
}
然后在JQuery代码中:

$("#myDiv").html(data.Html);

您是否使用fiddler之类的工具检查请求是否成功?i、 e.它返回200,您可以看到这个响应被发送到浏览器?@Vasya Pupkin,我仍然在您更新的问题中看到
数据类型:“json”
。那么当您删除它时会发生什么呢?我认为您没有领会Darin的观点,您需要将数据类型更改为html,并且您的原始代码应该可以工作(使用append调用)@Vasya Pupkin,您不需要指定这个。jQuery将使用服务器内容类型HTTP响应头来猜测内容。但是设置
数据类型:“html”
也没有错。为什么不像“returnpartialview”(“A1Partial”,model);”使用扩展方法“RenderPartialView”的目的是什么?在实际应用程序中,事情可能会出错,例如A1Partial中的代码可能引发db异常。。。我可以通过向我的JsonResult添加一个新参数来注意用户,该参数不是局部视图的一部分。
$("#myDiv").html(data.Html);