我用自动完成方法构建了一个Web表单,该程序在IDE中运行良好。但是在将应用程序发布到IIS之后,该方法不起作用。控制台显示此错误`无法加载资源:服务器响应,状态为500(内部服务器错误)Index2)。我怀疑jquery代码无法识别控制器名称。 CSHTML
<script type="text/javascript">
$(document).ready(function () {
$("#CardName").autocomplete({
source: function (request, response) {
$.ajax({
url: "Index2",
type: "POST",
dataType: "json",
data: { Prefix: request.term },
success: function (data) {
response($.map(data, function (item) {
return { label: item.CardName, value: item.CardId };
}))
}
})
},
messages: {
noResults: "", results: ""
}
});
})
</script>
控制器
[HttpPost]
public JsonResult Index2(string Prefix)
{
List<CardHolderDetails> getCardList = new List<CardHolderDetails>();
getCardList = _service.getCardList();
List<CardHolderDetails> ObjList = new List<CardHolderDetails>();
foreach (var value in getCardList)
{
ObjList.Add(new CardHolderDetails { CardId = value.CardId, CardName = value.CardName });
}
//Searching records from list using LINQ query
var CardName= (from N in ObjList
where N.CardName.StartsWith(Prefix)
select new { N.CardName, N.CardId });
return Json(CardName, JsonRequestBehavior.AllowGet);
}
以下代码在开发过程中运行良好,但是一旦发布到IIS,似乎无法读取jquery url
。可以将URL
替换为控制器功能名称吗?
答案 0 :(得分:0)
如果您的_service.getCardList()
返回null
,则foreach
将引发您尚未处理的异常。
这也许是您获得(500) internal server error
而不是jquery url
的原因,因为500错误代码表明服务器代码出了点问题。
建议,您应使用工具try - catch
并将异常记录到某个地方,以便能够解决此类问题。