确定Ajax WebMethod的URL(在Sitefinity中)

时间:2015-04-29 15:58:14

标签: asp.net ajax json webmethod sitefinity

我正在试图弄清楚如何确定这个ajax webmethod POST的baseUrl应该是什么。

根据此 the FML github repository,baseUrl是Sitefinity项目文件夹的路径。

在我的情况下,路径应该是:

“C:\ inetpub \ Website \ Public”但此路径的格式与“MyWebForm.aspx / WebMethod”的格式不同

这似乎是一个简单的问题,但在我测试之前,我想确保我做的正确。

我很感激任何建议和反馈。

提前致谢。

function buttonClick(e) {
    e.preventDefault();
    $.ajax({
        type: "POST",
        url: baseUrl + "MyWebForm.aspx/WebMethod",
        data: 1,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success:
            function() {
                alert('Success');
            },
        error:
            function (msg) {
                alert('Sorry, there was an error, please try again later');
            }
    });
}

2 个答案:

答案 0 :(得分:1)

如果您的SitefinityWebApp根目录下有.aspx文件,则该地址可以是相对的,然后基本URL将是" /"。我建议把它放到像#" WebMethods"然后它将是" / WebMethods"。我建议自己使用MVC控制器,甚至添加WebAPIController,你必须在引导程序中添加一个自定义路由,在下面添加到你的Global.asax。创建一个控制器,现在你可以调用/ api / MyController / GetSomeStuff或/ api / MyController / PostSomeStuff

protected void Application_Start(object sender, EventArgs e)
{
    Bootstrapper.Initialized += new EventHandler<ExecutedEventArgs>  (OnBootstrapperInitialized);
}
    private static void OnBootstrapperInitialized(object sender, Telerik.Sitefinity.Data.ExecutedEventArgs e)
        {
    if (e.CommandName == "Bootstrapped")
    {
        RegisterRoutes(RouteTable.Routes);
    }
}
private static void RegisterRoutes(RouteCollection routes)
{
    routes.Ignore("{resource}.axd/{*pathInfo}");

     routes.MapHttpRoute(
                 name: "ActionApi",
                 routeTemplate: "api/{controller}/{action}/{id}",
                 defaults: new { id = RouteParameter.Optional }
                 );
}

答案 1 :(得分:0)

url : window.location.protocol + "//" + window.location.host + "/WebServices/MyWebForm.aspx/WebMethod";

在URL字段中尝试