3

使用带有 mvc3 的 kendo 开源。

我有一个带有可选行的剑道网格。选择行时,它应将值发送到控制器方法,然后根据该值渲染新视图。我确定控制器方法被命中,返回正确的数据并提供正确的视图。使用 chrome web 开发人员工具,我可以在响应中看到呈现的页面,但浏览器中的视图永远不会改变。所以它一直有效,直到它真正看到为止。

我在剑道脚本中的 js:

        selectable: true,
        change: function (e) {
            var row = this.select();
            var detailId = this.dataItem(row).PersonId;

            $.post('@Url.Action("Detail", "Person")', { id: detailId });

        }

控制器方法:

    [HttpPost]
    public ActionResult Detail(int id)
    {

        var model = new Person();

        model = db.Person.Where(x => x.PersonId == id).FirstOrDefault();

        return View(model);
    }

知道为什么它不会渲染吗?

=======编辑===========

我在这里没有使用 ajax 函数,因为我不希望任何类型的响应返回到 js 函数。我希望将 id 发送到服务器端方法,我希望该方法运行,然后提供新视图,然后我希望将其发送到客户端并呈现。除了最后一步,它正在做所有事情,在客户端上渲染。我应该使用不同的 jquery 方法吗?

4

1 回答 1

1

尽管我对剑道网格不是很精通,但我确定您需要以某种方式处理响应$.post()

您应该使用$.post(url,data,handler);的重载 理想情况下,您的 js 代码中会包含类似的内容

$.post('@Url.Action("Detail", "Person")', { id: detailId }, function(data){
 //now render the data wherever you want
});
于 2013-05-20T18:02:57.933 回答