功能无法加载资源:Mvc

时间:2016-12-27 00:05:47

标签: javascript jquery model-view-controller sitefinity

我尝试使用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 };
}

1 个答案:

答案 0 :(得分:0)

您可以通过两种方式调用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