我正在尝试在APS.Net MVC中使用AJAX来调用我的控制器中的一个函数并从模型中传入一个参数但是当我在我的断点中放置一个断点时,单击该按钮似乎没有调用我的控制器码。当点击投票是按钮时,我希望调用VoteYes函数并将billid作为参数传入。 Billid是作为@ Html.Raw(Model.BillId)检索的模型页面的一部分。从@ Url.Action(“VoteYes”,“Bill”)生成的URL生成/ Bill / VoteYes
我的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();
}
}
}
以下是我加载网页时的页面来源: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>
答案 0 :(得分:4)
尝试更改url: @Url.Action("VoteYes","Bill")
,
到url: '@Url.Action("VoteYes","Bill")'
,