【问题标题】:Asp.Net partial view doesn't reloadAsp.Net 部分视图不会重新加载
【发布时间】:2017-05-10 13:49:43
【问题描述】:

我有一个视图,在这个视图中我嵌套了一个局部视图。 我想要实现的是通过jQuery从主视图重新加载部分视图。

这是我目前得到的:

Index.cshtml

@{Html.RenderAction("SkillResult", "Home"); }

<script type="text/javascript">

        var postData = { values: stringArray };

        // Fire off the request to controller
        $.ajax({
            cache: false,
            url: '/Home/SkillResult',
            type: "POST",
            dataType: 'json',
            data: postData
        });
</script>

SkillResult 控制器(部分视图)

public ActionResult SkillResult(List<String> values)
{
        SkillContext skillContext = new SkillContext();
        List<Skill> result= skillContext.Skills.ToList();

        return PartialView(result);
}

SkillResult.cshtml

@model IEnumerable<Result>
@using SkillSearch.Models

<h2>SkillResult</h2>

@foreach (var item in Model)
{
    <div>
        @item.Name
        <hr />
    </div>
}

如您所见,我从局部视图所在的 Index.cshtml 中触发 Ajax 请求。如果我调试,我可以看到所有请求都在工作,但部分视图没有更新其内容。

【问题讨论】:

  • 您需要JSON.stringify(postData)您的数据! :-)
  • 不做就成功到达控制器
  • 你的控制器中的values是什么?
  • 它从ajax调用接收到的数据
  • LOL 他的意思是它包含什么......从你的代码中不清楚你为什么期望它更新 atall...你渲染视图,然后立即进行 ajax 调用,没有成功处理程序。是什么让你认为这会成功?将成功处理程序添加到您的 ajax 调用

标签: jquery asp.net-mvc razor


【解决方案1】:

您没有在 ajax 调用中指定成功处理程序

我稍微修改了你的代码来演示它是如何工作的

希望它会有所帮助:)

<script type="text/javascript">

    var postData = { values: stringArray };

    // Fire off the request to controller
    $.ajax({
        cache: false,
        url: '/Home/SkillResult',
        type: "POST",
        dataType: 'html',
        data: postData,
        success:function(result){
            $(element).html(result);
        }
    });
</script>

【讨论】:

  • 感谢您的回答,但不知怎的,它并没有进入成功功能。
  • 检查控制台或使用 ajax 错误处理程序以便跟踪错误
  • 知道了。我不得不将 dataType 更改为 HTML 而不是 Json。在你的答案中改变它,我会接受它:)
  • 将其更改为 html :)
  • 完美!谢谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多