【问题标题】:Function Failed to load resource: Mvc函数加载资源失败:Mvc
【发布时间】:2016-12-27 00:05:46
【问题描述】:

我尝试使用 mvc 模型在我的 sitefinity 项目中调用一个方法, 但程序告诉加载资源失败:404, 永远找不到控制器,我不知道如何解决, 这是我的代码

jQuery 调用:

function myFunction(postId) {
    $.ajax({
        url:'/CombosController/GetCantones',
        type: 'POST',
        dataType:"applicaiton/json; charset=utf-8",
        data: { idprovincia: postId },
        success: function(data) {alert("success");},
        error: function() {alert("error");}
    })
}

控制器的动作:

[WebMethod]
public static ActionResult GetCantones(int idprovincia)
{
     CombosBL.Provincias.JsonListados metodos = new JsonLIstados();
     List<ClaseCantones.NCanton> ListaPropiedades = metodos.GetCantonesByIdProvincia(idprovincia);
     var lista = ListaPropiedades;
     return new JsonResult { Data = lista, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
}

【问题讨论】:

  • 请按照图片粘贴代码

标签: javascript jquery model-view-controller sitefinity


【解决方案1】:

您可以通过两种方式调用您的 MVC 操作

第一种方式

MVC 小部件示例:

[ControllerToolboxItem(Name = "CombosWidget", Title = "CombosWidget", SectionName = "MVC Custom Widgets")]
public class CombosController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    public ActionResult GetCantones(int idprovincia)
    {
        //your logic is here
    }
}

第二种方式

为控制器的操作创建自定义 URL 路由

示例如何为您的案例执行此操作。 Global.asax.cs 代码:

    protected void Application_Start(object sender, EventArgs e)
    {            
        Bootstrapper.Initialized += new EventHandler<Telerik.Sitefinity.Data.ExecutedEventArgs>(Bootstrapper_Initialized);
    }

    protected void Bootstrapper_Initialized(object sender, Telerik.Sitefinity.Data.ExecutedEventArgs e)
    {
        if (e.CommandName == "Bootstrapped")
        {
            RegisterRoutes(RouteTable.Routes);
        }
    }

    private void RegisterRoutes(RouteCollection routes)
    {
        routes.Ignore("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "CantonesApi",
            url: "api/getcantones",
            defaults: new { controller = "CombosController", action="GetCantones" }
        );
    }

之后,您可以致电http://yourhost/api/getcantones

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-09-30
    • 1970-01-01
    • 1970-01-01
    • 2012-07-24
    • 2018-01-15
    • 2013-02-26
    • 2019-05-28
    • 2016-06-24
    相关资源
    最近更新 更多