asp.net-mvc - 使用 NHibernate 和 MVC 调用从 Jquery Ajax 返回 IList<T> 的 WebMethod

标签 asp.net-mvc asp.net-mvc-3 jquery nhibernate

我的 Controller 中有一个 Web 方法...

    [WebMethod]
    public IList<ThemeSelectList> GetThemesForSelectedCategory(string themeCategoryId)
    {
        IList<ThemeSelectList> themeSelectList = new List<ThemeSelectList>();
        int emailLayoutThemeCategoryId = Convert.ToInt32(themeCategoryId);
        using (var trans = session.BeginTransaction())
        {
            EmailThemeBusinessLogic emailThemeBusinessLogic = new EmailThemeBusinessLogic(session, null);
            themeSelectList = emailThemeBusinessLogic.GetThemes(emailLayoutThemeCategoryId);
            trans.Commit();
        }

        return themeSelectList;            
    }

我试图从 java 脚本函数调用,即

function GetThemesForSelectedCategory(event)
{
    event = event || window.event || e.srcElement;
    event.preventDefault();
    var selectedThemeCategoryId = $('#ddlThemeCategory option:selected').val();
    var ThemeContainerDiv = $("#ThemeContenerDiv");
    ThemeContainerDiv.html('<p><img src="../../../../Images/loading.gif"></p>');
    $.ajax
    ({
        type: "POST",
        url: "GetThemesForSelectedCategory",
        data: JSON.stringify({ "themeCategoryId": selectedThemeCategoryId }),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {
            // function is not returning to success
            var ThemeDetails = data.d;
            for (var i = 1; i <= ThemeDetails.length; i++) {
                var row = ['<div id="' + ThemeDetails[i].ThemeId + '" class="themegroup divhighlight">\
                                <div class="themename">\
                                    ' + ThemeDetails[i].ThemeName + '\
                                </div>\
                                ' + GetColourTamplate(ThemeDetails[i].ThemeTemplateColorList) + ''].join('\n');
            }
        },
        error: function (xhr, ajaxOptions, thrownError) {
            // always error method is getting called
            var somthing = "pankajDubey";
        },
        complete: function (data) 
        {
            var ThemeDetails = data.d;
            for (var i = 1; i <= ThemeDetails.length; i++) {
                var row = ['<div id="' + ThemeDetails[i].ThemeId + '" class="themegroup divhighlight">\
                                <div class="themename">\
                                    ' + ThemeDetails[i].ThemeName + '\
                                </div>\
                                ' + GetColourTamplate(ThemeDetails[i].ThemeTemplateColorList) + ''].join('\n');
            }
        }
    });
}

我无法理解出了什么问题。 网络方法中的每件事都工作正常,但我不知道缺少什么。 请帮忙,因为我对 MVC 和 NHibernate 都是新手...

最佳答案

I have a web method in My Controller...

在 ASP.NET MVC Controller 中, Controller 具有操作,而不是 Web 方法。 Web 方法已过时。

所以:

public ActionResult GetThemesForSelectedCategory(string themeCategoryId)
{
    IList<ThemeSelectList> themeSelectList = new List<ThemeSelectList>();
    int emailLayoutThemeCategoryId = Convert.ToInt32(themeCategoryId);
    using (var trans = session.BeginTransaction())
    {
        EmailThemeBusinessLogic emailThemeBusinessLogic = new EmailThemeBusinessLogic(session, null);
        themeSelectList = emailThemeBusinessLogic.GetThemes(emailLayoutThemeCategoryId);
        trans.Commit();
    }

    return Json(themeSelectList);
}

然后:

$.ajax({
    type: "POST",
    url: "/SomeControllerName/GetThemesForSelectedCategory",
    data: { "themeCategoryId": selectedThemeCategoryId },
    success: function (data) {
        ...
    },
    error: function (xhr, ajaxOptions, thrownError) {
        ...
    },
    complete: function (data) {
        ...
    }
});

关于asp.net-mvc - 使用 NHibernate 和 MVC 调用从 Jquery Ajax 返回 IList<T> 的 WebMethod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16910982/

相关文章:

c# - Mvc 5 中的 Aspx View

c# - 如何在 .js 文件中嵌入 Razor C# 代码?

javascript - 如何根据用户的浏览器宽度动态地将 easySlider 幻灯片居中?

c# - 如何在我的 View 中仅显示不同的名称(来 self 的模型)?

asp.net-mvc - ASP.NET MVC Controller 在测试时正确初始化

asp.net-mvc - 我的应用程序中未加载图像、css 和 js 文件

c# - 通过 SOAP 的 MVC 3 存储库模式

php - 每天显示的所有事件

jQuery:捕获图像加载事件错误404,可以做到吗?

javascript - 如何在 ASP.NET MVC 中使用预定义设置创建 .xml 文件?