从JavaScript中正确调用控制器 - ASP.NET MVC

时间:2017-04-19 06:57:30

标签: javascript c# asp.net asp.net-mvc d3.js

我正在使用d3js库来绘制图表。我在这里调用这样的动作:

d3.json("CANCEL_REASON/Statistics2", function (data) {
....

我的控制器是这样的:

 public class CANCEL_REASONController : Controller
    {
        private Entities3 db = new Entities3();

        public ActionResult Statistics()
        {
            return View();
        }

        public ActionResult Statistics2()
        {

        ///...
        return Json(data, JsonRequestBehavior.AllowGet);
        }

当我调试JavaScript时,我意识到它试图调用:

  

http://localhost:12345/CANCEL_REASON/CANCEL_REASON/Statistics2

当我将js更改为:

d3.json("/Statistics2", function (data) {
....

它试图称之为:

  

http://localhost:12345/Statistics2

我应该如何修改我的代码,以便它可以调用它:

  

http://localhost:12345/CANCEL_REASON/Statistics2

感谢。

2 个答案:

答案 0 :(得分:2)

使用@Url.Action razor助手以获取正确的路径。

@Url.Action生成action方法的完全限定网址。

d3.json('@Url.Action("Statistics2","CANCEL_REASON")', function (data) {

或者只是

d3.json('/CANCEL_REASON/Statistics2', function (data) {

答案 1 :(得分:1)

添加一个前导斜杠,你应该很高兴:

d3.json("/CANCEL_REASON/Statistics2", function (data) { ... }

然后你的路径将相对于根。