2017-06-22 19 views
1

APS.Net MVCでAJAXを使用してコントローラの関数を呼び出し、モデルからパラメータを渡しますが、ボタンをクリックしてもコントローラが呼び出されていないようです私は私のコードにブレークポイントを置く。 Vote Yesボタンを押すと、VoteYes関数が呼び出され、billidがパラメータとして渡されます。 Billidは、@ Html.Raw(Model.BillId)として取得されたページの一部です。 Url.Action @から生成されたURL( "VoteYes"、 "ビル")/ビルを生成/ VoteYesASP MVCコントローラのヒットしないAjax

マイBill.cshtmlコード:

@model RepresentWebApp.Models.Bill 
@{ 
    ViewBag.Title = "Bill"; 
} 
<head> 
    <script src="~/Scripts/jquery-1.10.2.js"></script> 
    <script src="~/Scripts/jquery.unobtrusive-ajax.js"></script> 
</head> 

<h2>Bill</h2> 
<h3>@Html.DisplayName(Model.Title)</h3> 
<h3>@Html.DisplayName(Model.Subjects.Count().ToString())</h3> 

<button id="thebutton">Vote Yes</button> 

<script> 
$(document).ready(function() { 
    $("#thebutton").click(function (e) { 
     e.preventDefault(); 
      $.ajax({ 
       url: @Url.Action("VoteYes","Bill"), 
       type: 'POST', 
       data: { 
        BillId: @Html.Raw(Model.BillId) 
       }, 
       success: function(data){alert(data)} 
      }); 
    }) 
}) 
</script> 

マイコントローラー:BillController.cs

namespace RepresentWebApp.Controllers 
{ 
    public class BillController : Controller 
    { 
     private RepresentDBContext db = new RepresentDBContext(); 

     public ActionResult Index(int billid) 
     { 
      Bill bill = db.bill.Find(billid); 
      if (bill == null) 
      { 
       return HttpNotFound(); 
      } 

      return View("Bill", bill); 
     } 


     [HttpPost] 
     public ActionResult VoteYes(int BillId) 
     { 
      int itWorked = 1; 
      return View(); 
     } 

    } 
} 

URLのページを読み込むときのページソースは次のとおりです。http://localhost:58556/Bill/Index/10139
10139は、URLのbillidであるパラメータです。

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8" /> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <title>Bill - My ASP.NET Application</title> 
    <link href="/Content/bootstrap.css" rel="stylesheet"/> 
<link href="/Content/site.css" rel="stylesheet"/> 

    <script src="/Scripts/modernizr-2.6.2.js"></script> 


</head> 
<body> 
    <div class="navbar navbar-inverse navbar-fixed-top"> 
     <div class="container"> 
      <div class="navbar-header"> 
       <button type="button" class="navbar-toggle" 
       data-toggle="collapse" data-target=".navbar-collapse"> 
        <span class="icon-bar"></span> 
        <span class="icon-bar"></span> 
        <span class="icon-bar"></span> 
       </button> 
       <a class="navbar-brand" href="/">Application name</a> 
      </div> 
     <div class="navbar-collapse collapse"> 
      <ul class="nav navbar-nav"> 
       <li><a href="/">Home</a></li> 
       <li><a href="/Home/About">About</a></li> 
       <li><a href="/Home/Contact">Contact</a></li> 
      </ul> 
      <ul class="nav navbar-nav navbar-right"> 
       <li><a href="/Account/Register" id="registerLink">Register</a></li> 
       <li><a href="/Account/Login" id="loginLink">Log in</a></li> 
      </ul> 

     </div> 
    </div> 
</div> 
<div class="container body-content"> 




<head> 
    <script src="/Scripts/jquery-1.10.2.js"></script> 
    <script src="/Scripts/jquery.unobtrusive-ajax.js"></script> 

</head> 

<h2>Bill</h2> 
<h3>A joint resolution to authorize the use of United States Armed Forces 
against al-Qaeda, the Taliban, and the Islamic State of Iraq and Syria, and 
associated persons or forces, that are engaged in hostilities against the 
United States, the Armed Forces, or</h3> 
<h3>0</h3> 

<button id="thebutton">Vote Yes</button> 

<script> 
$(document).ready(function() { 
    $("#thebutton").click(function (e) { 
     e.preventDefault(); 
      $.ajax({ 
       url: /Bill/VoteYes, /*generates */ 
       type: 'POST', 
       data: { 
        BillId: 10139 
       }, 
       success: function(data){alert(data)} 
      }); 
    }) 
}) 
</script> 


    <hr /> 
    <footer> 
     <p>&copy; 2017 - My ASP.NET Application</p> 
    </footer> 
</div> 

<script src="/Scripts/jquery-1.10.2.js"></script> 

<script src="/Scripts/bootstrap.js"></script> 
<script src="/Scripts/respond.js"></script> 



<!-- Visual Studio Browser Link --> 
<script type="application/json" id="__browserLink_initializationData"> 
{"appName":"Chrome","requestId":"d3ed6b78215d4868a6d2d6750d9a3186"} 
</script> 
<script type="text/javascript" 
src="http://localhost:64890/6232fa8de08b494bb34022167291a681/browserLink" 
async="async"></script> 
<!-- End Browser Link --> 

</body> 
</html> 
+0

url: '@Url.Action("VoteYes","Bill")'にごurl: @Url.Action("VoteYes","Bill")

を変更しようとするには、ブラウザのコンソールでエラーが発生していますか?渡されたデータは正しいようですが、アクションメソッドにアクセスすると何か問題が発生します。 –

+0

そこを見ることは決して考えられませんでした。サーバーからリソースをロードできない500エラーが発生しました。その試み:58556/Bill/VoteYesなぜ私のコントローラに行っていないのか分かりません。ルーティングの問題?私はまだあまりにもよくMVCルーティングを理解していない。 –

+0

Nevermind。キエルウの返事がそれを解決した。 –

答えて

4

+0

それはそれを解決しました!ありがとう! –

+0

@JoshDennisonあなたの質問を解決した場合は、将来の参考のために回答としてマークしてください – kielou

関連する問題