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