【问题标题】:Ajax Call and return error in asp.net mvc3asp.net mvc3中的Ajax调用并返回错误
【发布时间】:2012-07-16 05:56:06
【问题描述】:

我在我的视图中调用了一个动作控制器,当我设置断点并观察 ajax 函数的行为时,它在后面的代码上正常工作,但是当返回到函数时它不运行'success:function'并返回错误

$.ajax({
        type: "POST",
        url: "/GetListContents",
        data: { _PageID: PageID, _LangID: LangID, _BoxTypeID: 6, _ListTypeID: 8, _Count: CurPageIndex },
        cache: false,
        dataType: 'html',
        success: function (html) {
            $("#dynamicBody").html(html);
            $("#dynamicFooter").html("Hello");
        },
        error: function (xhRequest, ErrorText, thrownError) {
            $("#dynamicBody").html(xhRequest.status);
            $("#dynamicBody").html(ErrorText);
        }
    });

GetListContents 在后面的代码上工作,但结果是错误
tnx 提前
抱歉英语不好
更新
这是我的动作控制器代码

[HttpPost]
    public PartialViewResult GetListContents(int _PageID, int _LangID, int _BoxTypeID, int _ListTypeID, int _Count)
    {
        dynamic cOut = GetListContent(_PageID, _LangID, _BoxTypeID, _ListTypeID, _Count);
        return PartialView("DynamicPagingBoxInfo",null);
    }

    public dynamic GetListContent(int _PageID, int _LangID, int _BoxTypeID, int _ListTypeID, int _Count)
    {
        List<ipMedia_PageContentsCache> PageContent = new List<ipMedia_PageContentsCache>();
        ListPageDataProvider.GetDynamicBoxContent(ref PageContent, _PageID, _LangID,_Count * 10);
        ViewBag.PageListContents = PageContent;
        ViewBag.CurPageIndex = _Count;
        return PageContent;
    }

更新 ||
更多解释: 我的局部视图使用 viewbag 来渲染页面并从后面的代码中获取数据 第一次在页面请求上运行的部分视图工作正常,但是当我想用 ajax 渲染它时,ajax 函数返回错误! 我的视图包在第一次和 ajax 调用中具有相同的结构

【问题讨论】:

  • 你能给我们看一下Controller中Action的代码吗?
  • 您的部分页面是否需要模型?它是强类型的吗?您将 null 传递给它可能是在渲染时在部分页面中引发异常
  • 您是否有任何理由不使用模型并利用模型绑定?使用这种标准技术,您只需要编写很少的 JavaScript。此外,您的控制器将不那么冗长。
  • 是的,一个变量为空,当部分视图无法将其转换为请求的数据并出现错误时.. tnx Every Body

标签: jquery ajax asp.net-mvc-3


【解决方案1】:

您需要从控制器发回实际的 html。看看RenderPartial。我过去曾使用以下代码来执行此功能(放置在我的控制器继承自的基本控制器上):

    protected string RenderPartialView(string viewName, object model)
    {
        if (string.IsNullOrEmpty(viewName))
        {
            viewName = ControllerContext.RouteData.GetRequiredString("action");
        }

        ViewData.Model = model;

        using (var sw = new StringWriter())
        {
            var viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
            var viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);

            viewResult.View.Render(viewContext, sw);

            return sw.GetStringBuilder().ToString();
        }
    }

【讨论】:

  • 在代码后面渲染部分?我不能使用它或在视图中使用?你能说更多吗?
  • 您从控制器操作中传回字符串。当出现错误时,我通常会传回包含success 属性和view 属性和message 的json。然后view 将包含呈现的 html。
  • 根据您的回答,我发现我忘记将数据发送到我的局部视图,并且当它请求该变量为 null 并出现错误时,tnx
【解决方案2】:

可能是一行有错误

url: "/GetListContents",

尝试改用url: '@Url.Action('GetListContents','YourControllerName'),

【讨论】:

  • 不,当我在函数后面的代码中的函数体上设置断点时,函数运行正确并且没有异常抛出!
猜你喜欢
  • 2016-01-07
  • 1970-01-01
  • 2012-03-29
  • 2012-08-11
  • 1970-01-01
  • 2017-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多