ajax post后用模型渲染页面

时间:2015-06-02 09:49:48

标签: jquery ajax asp.net-mvc

是否可以发出ajax post请求,并在控制器中返回一个模型,之后使用该模型呈现页面?为了说明我的意思,请说我们有一个简单的ajax帖子:

[HttpPost]
public ActionResult PostReq(MyModel model)
{ 
    //do some changes to model
    //render view with new model
    return View(model);
}

在家庭控制器中我有:

df <- as.data.frame(c("M","F"))
colnames(df) <- "M1"

rename_cols <- function(df) {
    colnames(df)[names(df) == "M1"] <<- "sex"
}

> rename_cols(df)         # this will operate directly on the 'df' object
> df
  sex
1   M
2   F

我如何实现这一目标?目前,这没有任何作用,页面不刷新或重新渲染自己。是否可以从ajax请求中执行此操作?

我使用ajax但不使用模型来绑定表单数据的原因是因为它是动态的,据我所知,我无法动态地将表单数据绑定到模型。

2 个答案:

答案 0 :(得分:3)

success添加$.ajax回调,这将为您提供帖子的结果(在本例中为html),例如:

    $.ajax({
        url: "/Home/PostReq",
        data: JSON.stringify(data),
        type: "POST",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        dataType: "html",
        cache: false,
        async: true,
        error: function (jqXHR, error, errorThrown) {
            //display error
        },
        success: function (data, textStatus, jqXHR) {
            $("body").html(data);
        }
    })

使用部分视图而不是替换整个身体会更容易。

答案 1 :(得分:2)

是的,可以做到。要记住的事情很少

1)首先,帖子后返回的视图应该是部分视图不是完整视图

2)您必须在主视图上放置一个容器div,其中将追加来自ajax调用的响应部分视图,即成功回调。

我的意思是,在您的主视图中,您将拥有:

$.ajax({
            url: "/Home/PostReq",
            data: JSON.stringify(data),
            type: "POST",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            cache: false,
            async: true,
            error: function (jqXHR, error, errorThrown) {
                //display error
            }
            success: function(response) {

              $('#container').html(response);
             }
        })

并在ajax调用成功函数中添加容器div中的响应,如:

{{1}}