gpt4 book ai didi

c# - 无法从 json 结果 MVC 4 中检索值

转载 作者:太空狗 更新时间:2023-10-29 23:31:20 24 4
gpt4 key购买 nike

我无法从 JSON Controller 操作中获得所需的结果。我在互联网上进行了搜索,但没有任何建议的解决方案可以解决我的问题。

我的 Controller 操作:

public JsonResult AutoComplete(string term)
{
var result = (from c in db.CategoryContents
where c.Title.ToLower().Contains(term.ToLower())
select new { c.Title, c.ImageURL, Description = c.Category.Name + " Review" }).Distinct();
return Json(result, JsonRequestBehavior.AllowGet);
}

这是我的 jQuery ajax 文件:

$(document).ready(function () {


var displayLimit = 7;


// jqueryui autocomplete configuration
$("#term").autocomplete({
source: function (req, resp) { // get JSON object from SearchController
$.ajax({
url: "/Search/AutoComplete", // SearchController JsonResult
type: "POST",
dataType: "json",
data: { term: req.term },
success: function (data) {
resp($.map(data, function (item) {

return { label: item.Name, value: item.Name, imageURL: item.ImageURL, id: item.ID };
}

));
}
});
},



select: function (event, ui) { // keyword selected; parse values and forward off to ProductController's ViewProduct View
var selected = ui.item;
var mdlNum, mdlName;

if (selected.value !== null) {
var array = selected.value.split(' ');
mdlNum = array[0].toLowerCase();
// mdlName = selected.value.replace(array[0], '').trim().toLowerCase().replace(/[^a-z0-9]+/g, ' ');
// window.location.replace('http://' + location.host + '/Search/Refine?ref=' + mdlNum + '' + mdlName);
window.location.replace('http://' + location.host + '/Category/Details/' + ui.id);

}

},

open: function () { $('ul.ui-autocomplete').addClass('opened') },
close: function () { $('ul.ui-autocomplete').removeClass('opened').css('display', 'block'); }


})

.data("ui-autocomplete")._renderItem = function (ul, item) {

//var inner_html = '<a><div id="example" class="k-content"><div class="demo-section"><div class=".customers-list img"><img src="' + "../common/theme/images/gallery/3.jpg" + '"></div><div class="customers-list h3">' + item.label + '</div><div class="customers-list p">' + item.description + '</div></div></div></a>';


var newText = String(item.value).replace(
new RegExp(this.term, "gi"),
"<strong>$&</strong>"
// "<span class='ui-state-highlight'>$&</span>"
);

var inner_html = '<a><div class="list_item_container"><div class="image"><img src="' + item.imageURL + '" alt="" /></div><div class="labels">' + newText + '</div><div class="description">' + item.id + '</div></div></a>';


return $("<li></li>")
.data("item.autocomplete", item).append(inner_html)
.appendTo(ul);

};

它没有返回 productId,我在这一行有错误:

window.location.replace('http://' + location.host + '/Category/Details/' + ui.id);

它说的是/Category/Details/undefined 但我想在这里使用 id 而不是 undefined。请帮忙。

最佳答案

您需要从自动完成中返回您的ID,它在您的投影中丢失。

将其更改为以下内容:

var result = (from c in db.CategoryContents
where c.Title.ToLower().Contains(term.ToLower())
select new { c.Title, c.ImageURL, Description = c.Category.Name + " Review", ID = c.ID }).Distinct();
return Json(result, JsonRequestBehavior.AllowGet);

以上假定您在数据库中的 ID 是大写的。

关于c# - 无法从 json 结果 MVC 4 中检索值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22097033/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com