【问题标题】:ASP.NET MVC - Render PartialView with AJAX?ASP.NET MVC - 使用 AJAX 渲染部分视图?
【发布时间】:2011-06-18 04:27:21
【问题描述】:

今天早些时候,我发布了另一篇帖子,@Darin Dimitrov 对我的帮助很大,但是我又一次被困住了...... 我的 javascript 调用 AddWebsite ActionResult ,它可以正常工作,但是 $.ajax() 中的错误函数总是触发,因为

return PartialView(ListPartialView, MapUserToViewModel); 

不是有效的 JSON。

我遇到过人们使用类似

的例子
RenderPartialViewToString(partialview, model);

然后把它扔到一个 JSON 对象中……但如果你问我,这太“hackish”了……难道没有更简单的方法来完成这个吗?

...以及代码:

// DashboardController.cs

[HttpPost]
public ActionResult AddWebsite(CreateWebsiteViewModel website)
{
    if (!ModelState.IsValid)
    {
        throw new HttpException(400, "Client-side validation failed.");
    }

    if (string.IsNullOrWhiteSpace(website.URL))
    {
        throw new ArgumentNullException("URL", "The URL cannot be empty nor contain only whitespaces.");
    }

    using (_session.BeginTransaction())
    {
        _session.Query(new AddWebsite(_contextProvider.GetUserSession.UserId, website.URL));
        _session.Transaction.Commit();
    }

    return PartialView(ListPartialView, MapUserToViewModel);
}

// MyJs.js

$("#testform").live('submit', function () {

    var test = { URL: $("#URL").val() };

        $.ajax({
            url: "/Dashboard/AddWebsite",
            type: "POST",
            data: JSON.stringify(test),
            dataType: "json",
            contentType: "application/json; charset=utf-8",
            success: function (data) {
                alert("TRIG");
                $("#content").html(data);
            },
            error: function () {
                alert("Error");
            }
        });

    return false;
});

提前致谢!

【问题讨论】:

    标签: javascript asp.net asp.net-mvc ajax


    【解决方案1】:

    在您的特定情况下,我认为问题出在您的 javascript 代码上。您将dataType(这是函数期望在响应中解析的内容)指定为json。根据您发布的操作,您应该将html 设置为dataType,它应该可以解决您的问题。这样做并没有错(您不必对所有事情都使用 JSON)。

    【讨论】:

      【解决方案2】:

      简单数据

      为什么首先设置dataTypecontentType?由于您的对象 test 非常简单,您可以按原样提供它,它将被 Asp.net MVC 毫无问题地使用,您将返回您的部分视图。

      复杂数据

      如果您的对象会更复杂,那么您可以使用不同的jQuery plugin,这样就可以发送复杂的 JSON 对象而无需进行区分。

      【讨论】:

        猜你喜欢
        • 2011-04-08
        • 2015-04-07
        • 2010-10-19
        • 2020-07-28
        • 1970-01-01
        • 2018-01-18
        • 1970-01-01
        • 1970-01-01
        • 2012-01-09
        相关资源
        最近更新 更多