Skip to main content
 首页 » 编程设计

c#之ASP MVC Ajax 未命中 Controller 功能

2024年02月05日34xiaohuochai

我正在尝试在 APS.Net MVC 中使用 AJAX 来调用我的 Controller 中的函数并从模型中传递参数但是当我在我的代码中放置断点时,单击按钮似乎并没有调用我的 Controller 代码。当点击 Vote Yes 按钮时,我希望调用 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> 

我的 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(); 
        } 
 
     } 
} 

这是我加载 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> 

请您参考如下方法:

尝试更改您的 url:@Url.Action("VoteYes","Bill"),

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