我是ASP.NET和jQuery的新手。在MVC 4中遇到查询问题。我想将jquery先前生成的值(Id)与数据库表进行比较。应显示与上一个函数中查询的值(Id)匹配的所有行。所以
这是Controller中用于获取我想要比较的行的函数:
public PartialViewResult NumberByAnimal(int? animalId) {
object numbers = null;
numbers = db.Inhabitants.Find(animalId);
return PartialView("Number", numbers);
}
这是上一个过程的一部分,它包含通过AJAX搜索的值(animalId)我要与数据库中的'Inhabitant'表进行比较:
$('#search').keyup(function () {
var searchField = $('#search').val();
var myExp = new RegExp(searchField, 'i');
$.getJSON("/Animal/GetAnimals", function (data) {
var output = '<ul class="searchresult">';
$.each(data, function (key, val) {
if (val.name.search(myExp) != -1) {
output += '<li class="listobject">';
output += '<div class="list">' + val.name + '</div>';
output += '<p class="listelement">Order: ' + val.order + ' Family: ' + val.family + ' Genus: ' + val.genus + ' Species: ' + val.species + '</p>';
output += '<div id="add" class="hidden">';
output += '<div class="ctry-view">';
output += '<p class="listelement">Origin: ' + val.origin + '</p>';
output += '<p class="listelement">Continent: ' + val.continent + '</p>';
output += '</div>';
output += '<img class="img-view" alt="Picture normally displayed" src="data:image/jpeg;base64," + val.image />';
output += '<p class="desc">' + val.shortDescription + '</p>';
output += '</div>';
output += '<hr>';
output += '</li>';
}
然后我想将id传递给函数并创建Partial视图,但$(this).val()返回0.我不知道如何获取被点击对象的animalId。
$(document).on("click", "li.listobject", function () {
$("ul.searchresult").remove();
$('#map-canvas').removeAttr('class');
var currentId = $(this).val();
alert(currentId);
$('#numberPlaceholder').load("/Inhabitant/NumberByAnimal", { animalId:currentId });
部分视图:
@model IEnumerable<TheMenagerieNetwork.Models.Inhabitant>
<ul>
@foreach (var item in Model) {
<li>
@Html.DisplayFor(modelItem => item.number)
</li>
}
</ul>
它会抛出一个Null引用异常! 谢谢你的帮助!