1

ビューでアクションコントローラーを呼び出し、ブレークポイントを設定して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呼び出しで同じ構造になっています

4

2 に答える 2

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();
        }
    }
于 2012-07-16T06:20:07.607 に答える
0

エラーの可能性があります

url: "/GetListContents",

url: '@Url.Action('GetListContents','YourControllerName'),代わりに使用してみてください

于 2012-07-16T06:13:06.980 に答える