Jquery 如何使用JsonResult重新加载局部视图?

Jquery 如何使用JsonResult重新加载局部视图?,jquery,ajax,asp.net-mvc,json,Jquery,Ajax,Asp.net Mvc,Json,在我的视图中有一个带有微调器的功能区,用户可以在其中选择一个int类型,我使用该类型作为参数来获取存储库中的一些数据 所以我提出了一个ajax请求: var url = "/ControllerExample/GetJsonUrl?param=" + s.GetItemValueByName("countParam") ; jQuery.ajax({ type: "GET", url: url,

在我的
视图中
有一个带有微调器的功能区,用户可以在其中选择一个
int
类型,我使用该类型作为参数来获取存储库中的一些数据

所以我提出了一个ajax请求:

  var url = "/ControllerExample/GetJsonUrl?param=" +      s.GetItemValueByName("countParam") ;
        jQuery.ajax({
            type: "GET",
            url: url,
            dataType: "json",
            contentType: "application/json; charset=utf-8",
            success: function (data) {
                window.location.href = data;
            },
            failure: function (errMsg) {
                alert(errMsg);
            }
        });
在我的控制器中我有一个
ActionResult
,它返回一个
JsonResult
,带有指向“success”函数的特定url:

 public ActionResult GetJsonUrl(string param)
    {

            var urlHelper = new UrlHelper(ControllerContext.HttpContext.Request.RequestContext);

            string url = urlHelper.Action("OtherAction", "ControllerExample", new {id = param});

            return new JsonResult {Data = url, JsonRequestBehavior = JsonRequestBehavior.AllowGet};           
    }
因此,如果结果是成功,则请求返回到ajax成功函数,然后转到示例控制器,以执行其他操作


我只想用一个动作就能做到,有可能吗?刷新
JsonResult
或其他内容中的页面。

您可以使用模型将该视图呈现为字符串,并使用JSON结果传递。然后替换整个DOM elemet

这里呢

   success: function (data) {
        $("#targetDOMElementId").val(data);
    },

其中,targetDOMElementId可以是一个容器
DIV
供您查看
View

您可以使用您的模型将该视图渲染为字符串,并使用JSON结果传递。谢谢,现在我明白了这一点。我想它会起作用的。顺便说一句,我正在测试ajax请求,由于一个错误,我将类型设置为“POST”,它也起了作用。你知道为什么吗?@ggui我很高兴它对你有用@ggui在某些情况下,使用纯HTTP中的json生成的复杂类型获取数据不允许使用正文中的请求数据(json)执行GET请求但是它允许使用URI中的请求数据(比如domain.com?number=2&factor=4)来获取请求,但是它不是json数据,因此您也可以使用POST来获取具有json:)的复杂请求类型的数据
   success: function (data) {
        $("#targetDOMElementId").val(data);
    },