PDA

View Full Version : سوال: اشکال در جستجو با ajax



armm1388
پنج شنبه 10 بهمن 1398, 16:20 عصر
با سلام
در یک وب پیج در اینترنت مقاله ای تحت عنوان "جستجوی مطالب به صورت ajax در mvc" پیدا کردم. مراحل آنرا انجام دادم ولی با اشکال مواجه شد. ممنون میشم راهنمایی بفرمایید.

مدل :
public class Post
{
[Key]
public int id { get; set; }
public string Title { get; set; }

public string Description { get; set; }

public string Img { get; set; }

public DateTime DateInsert { get; set; }
}

+++++++++++++++
کنترلر :
public ActionResult AjaxSearch()
{
return View();
}

[HttpPost] // شاید این خط نیاز نباشد
[Route("AjaxSearch/{q}")]
public ActionResult AjaxSearch(string q)
{
// if (!Request.QueryString.AllKeys.Contains("q"))
// Response.Redirect("/");

IEnumerable<Post> news = new List<Post>();

if (q.Length > 2)
{
ViewBag.q = q;
ViewBag.count = 0;

news = (db.Posts.Where(p => (p.Title.Contains(q) ||
p.Description.Contains(q)
)).Distinct());
ViewBag.count = news.Count();
}

return PartialView(news.Take(4).ToList());
}
++++++++++++++++++

ویو :


@model IEnumerable<ContosoUniversity.Models.Post>

<li class="list-group-item "> <span class=" "> تعداد یافت شده : @ViewBag.count </span> </li>
@foreach (var item in Model)
{ <li class="list-group-item"> <a href="#">@item.Title</a></li>

}

@if (Model.Count() > 2)
{
<li class="list-group-item"> <a href="/Search?q=@ViewContext.Controller.ViewBag.q" class="text-center label label-success">مشاهده بیشتر</a></li>

}

<!-- سه خط زیر را اضافه کردیم تا بتوان با ایجکس کار کرد -->
<script src="~/Scripts/jquery-3.4.1.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>
<script src=”-/Scripts/jquery.unobtrusive-ajax.min.js”></script>



<form action="Search" method="get" enctype="multipart/form-data">
<div class="input-group">
<input type="text" class="form-control" placeholder="Search" name="q" id="q">
<div class="input-group-btn">
<button class="btn btn-default" type="submit">
<i class="glyphicon glyphicon-search"></i>
</button>
</div>
<ul id="SearchResualt" class="list-group"></ul>
</div>
</form>

<script>

$("#q").keyup(function () {


$.ajax({
url: "/AjaxSearch/" + $("#q").val(),
type: "Get",
data: {}
}).done(function (result) {
if ($("#q").val().length < 2) {
$("#SearchResualt").css('display', 'none');
}
else {
$("#SearchResualt").css('display', 'block');
}
$("#SearchResualt").html('');
$("#SearchResualt").append(result);

});
});

</script>


<script src="~/Scripts/jquery.validate.min.js"> </script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>


++++++++++++++


اشکال رخ داده که غالبا متوجه دستور @foreach (var item in Model) می باشد.



Error:
An exception of type 'System.NullReferenceException' occurred in App_Web_ybymqfpu.dll but was not handled in user code

با تشکر