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>© 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>
、
url: '@Url.Action("VoteYes","Bill")'
にごurl: @Url.Action("VoteYes","Bill")
、を変更しようとするには、ブラウザのコンソールでエラーが発生していますか?渡されたデータは正しいようですが、アクションメソッドにアクセスすると何か問題が発生します。 –
そこを見ることは決して考えられませんでした。サーバーからリソースをロードできない500エラーが発生しました。その試み:58556/Bill/VoteYesなぜ私のコントローラに行っていないのか分かりません。ルーティングの問題?私はまだあまりにもよくMVCルーティングを理解していない。 –
Nevermind。キエルウの返事がそれを解決した。 –