Я создаю кнопку «Мне нравится» в простой программе MVC для комментариев. Я передаю идентификатор комментария через ActionResult в HomeController, когда наводил курсор на кнопку «Мне нравится». Проблема (я думаю) заключается в том, что я не знаю, как передать список IEnumerable Likes для ajax.Передача IEnumerable через Json
Сценарий и HTML часть:
HTML:
<a href="#" class="likes" title="No likes yet." id="@comment.ID">Like this</a>
Сценарий:
$(".likes").hover(function (event) {
var Liker = { "CID": event.target.id };
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "/Home/ShowLike/",
data: JSON.stringify(Liker),
dataType: "json",
success: function (data) {
$.each(data.Name, function (value) {
alert(value);
});
},
error: function (xhr, err) {
// Note: just for debugging purposes!
alert("readyState: " + xhr.readyState +
"\nstatus: " + xhr.status);
alert("responseText: " + xhr.responseText);
}
});
});
HomeController -> ShowLike
[HttpPost]
public ActionResult ShowLike(Liker ids)
{
LikesRepository lkrep = new LikesRepository();
IEnumerable<Like> list = lkrep.GetLikes(ids.CID);
return Json(list);
}
LikesRepository
public class LikesRepository
{
CommentDBDataContext m_db = new CommentDBDataContext();
public IEnumerable<Like> GetLikes(int iden)
{
var result = from c in m_db.Likes
where c.CID == iden
orderby c.Name ascending
select c;
return result;
}
public void AddLike(Like c)
{
m_db.Likes.InsertOnSubmit(c);
m_db.SubmitChanges(); //This works
}
}
Все остальное выглядит прекрасно для возврата IEnumerable. Вы должны использовать JS-отладчик для просмотра свойства данных в своей функции успеха ajax, и он даст вам представление о том, как обрабатывать данные при возврате (при условии, что ваши данные не пусты). Мне нравится использовать хром и установить точку останова в моей функции успеха, а затем навести курсор на объект данных. – Zach