2017-06-22 2 views
1

Ich versuche, AJAX in APS.Net MVC verwenden, um eine Funktion in meinem Controller aufrufen und übergeben Sie einen Parameter aus dem Modell, aber Klicken auf die Schaltfläche scheint nicht mein Controller aufrufen wenn ich einen Breakpoint in meinen Code lege. Wenn ich die Vote Yes-Taste drücke, möchte ich die VoteYes-Funktion aufrufen und die Billid als Parameter übergeben lassen. Die Billid ist ein Teil der Seiten Model abgerufen als @ Html.Raw (Model.BillId). Die URL generiert von @ Url.Action ("VoteYes", "Bill") erzeugt/Bill/VoteYesASP MVC Ajax nicht Controller-Funktion

Mein Bill.cshtml Code:

@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> 

Mein Controller: 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(); 
     } 

    } 
} 

Hier ist die Seite Quelle, wenn ich die Seite für URL laden: http://localhost:58556/Bill/Index/10139
10139 ist ein Parameter, der die Billid in der URL ist.

<!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

Haben Sie Fehler in Browser-Konsole zu bekommen? Ihre übergebenen Daten scheinen richtig zu sein, aber beim Zugriff auf die Aktionsmethode ist etwas falsch. –

+0

Ich hätte nie gedacht, dort zu suchen. Fehler beim Laden einer Ressource vom Server durch einen 500-Fehler behoben. Es versucht: 58556/Bill/VoteYes Nicht sicher, warum das nicht zu meinem Controller geht. Routing-Problem? Ich verstehe MVC Routing noch nicht gut. –

+0

Vergiss es. Kielous Antwort löste es. –

Antwort

4

try Ihre url: @Url.Action("VoteYes","Bill") ändern

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

+0

Das hat es gelöst! Vielen Dank! –

+0

@JoshDennison Wenn es Ihre Frage gelöst hat, markieren Sie es als Antwort für zukünftige Referenz – kielou