我遇到了一些我爲我的MVC 5項目編寫的Ajax代碼的問題,我試圖爲我的實現一個搜索欄表使用ajax,但我遇到了這個錯誤「無法加載資源:服務器響應狀態爲500(內部服務器錯誤)」。MVC - 無法加載資源:服務器響應狀態爲500(內部服務器錯誤)
這是我的局部視圖代碼,其中包括JavaScript的Ajax代碼:
@model IEnumerable<ToDo.Models.Venue>
@*Search Box*@
@using (Html.BeginForm())
{
<p>
<input type="text" class="form-control" id="txtSearch">
<span class="btn btn-sm btn-warning" id="btnCustomerInc" onclick="VenueSearch();">Search</span>
</p>
}
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.VenueName)
</th>
<th>
@Html.DisplayNameFor(model => model.VenueType)
</th>
<th>
@Html.DisplayNameFor(model => model.VenueTown)
</th>
<th>
@*blank*@
</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.VenueName)
</td>
<td>
@Html.DisplayFor(modelItem => item.VenueType)
</td>
<td>
@Html.DisplayFor(modelItem => item.VenueTown)
</td>
<td>
@Html.ActionLink("Details", "Details", new { id = item.VenueID }, new { @class = "btn btn-primary" })
</td>
</tr>
}
</table>
<script>
function VenueSearch() {
console.log("Venue Search function hit");
var search = document.getElementById("txtSearch").value;
console.log(search);
$.ajax({
type: "GET",
url: '@Url.Action("VenuesTablePartialView", "Venues")',
data: { searchString: search },
success: function (data) {
$('#VenueTable').html(data);
$('#VenueTable').fadeIn("fast")
}
});
}
</script>
這是我的局部視圖控制器動作:
[ChildActionOnly]
public ActionResult VenuesTablePartialView(string searchString)
{
var venues = from v in db.Venues
select v;
//Search
if (!String.IsNullOrEmpty(searchString))
{
venues = venues.Where(v => v.VenueName.ToUpper().Contains(searchString.ToUpper()));
}
return PartialView("_VenuesTable", venues.ToList());
}
}
這將意味着控制器動作(或在管道中的一些過濾器或消息處理)拋出異常。抓住一個像Fiddler這樣的工具,並根據更詳細的錯誤信息查看它返回的內容,並從那裏排除故障。 – jleach
是的,我再看看控制器的動作,我意識到[ChildActionOnly]是我的問題的根源,我刪除了這一行,現在按預期工作。 –