2016-03-30 3 views
3

に使用する私はMVC4アプリケーション構造を以下していますHomeController.csASP.NET MVC4コントローラのActionMethodへの正しい道AJAX

Index.cshtmlは、次のようになります。

:ように見える

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <script src="Scripts/jquery-2.2.2.min.js"></script> 
</head> 
<body> 
    <script> 
    $.ajax({ 
     url: '@Url.Action("SomeActionMethod", "HomeController")', 
     type: "POST", 
     cache: false, 
     dataType: 'json', 
     contentType: 'application/json; charset=utf-8', 
     success: function (data) { 
      alert(data); 
     }, 
     error: function() { 
      alert("fail"); 
     } 
    }); 
    </script> 
</body> 
</html> 

HomeController.csを私は自分のアプリケーションを起動すると0

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 

namespace SapRepLanciatoreCAS.Controllers 
{ 
    public class HomeController : Controller 
    { 
     public ActionResult Index() 
     { 
      return View(); 
     } 

     //trying to invoke from ajax 
     [HttpPost] 
     public ActionResult SomeActionMethod() 
     { 
      return Json(new { foo = "bar", baz = "Blech" }); 
     } 
    } 
} 

私はこのエラーを得た: enter image description here

パスまたはコントローラが悪いのか?

答えて

5

MVCはcontrollerの名前の最初の部分を考慮に入れます。すなわち、Controllerというキーワードを無視します(Homeというビューを参照)。だからあなたのURLがなければなりません - Homeに変更HomeController

url: '@Url.Action("SomeActionMethod", "Home")', 
+0

Dude!あなたが正しい!私はこの問題で一日を過ごしました... –

+1

Resharperなどのツールを試してみてください。このようなビューのエラーを表示します;) – Zaki

+0

このパターンは、ASP.NET MVCでちょっとバグです。 – Graham

0
url:'@Url("Method Name","Controller Name")' 

これはあなたを助けることを願っています。

関連する問題