C# ASP.Net MVC5 Ajax为PartialView调用的操作不返回响应内容

C# ASP.Net MVC5 Ajax为PartialView调用的操作不返回响应内容,c#,jquery,ajax,asp.net-mvc,C#,Jquery,Ajax,Asp.net Mvc,场景: 我正在实现一个搜索功能。一旦用户停止键入,搜索值和一些其他值就会通过AJAX传递给控制器。由于下面描述的问题,工作即将完成,它只是缺少显示匹配结果的能力 问题: 值被正确发送到控制器上的操作,并且PartialViewResult对象被正确生成,这意味着没有引发异常,并且它不是null。但是AJAX代码不接收任何内容 正如您所看到的,服务器正在返回200 HTTP代码,但没有返回任何内容 如果你能给我一个解决办法,我会很高兴的。我有一种感觉,我遗漏了一些非常琐碎的东西,但我目前无法发现

场景: 我正在实现一个搜索功能。一旦用户停止键入,搜索值和一些其他值就会通过
AJAX
传递给控制器。由于下面描述的问题,工作即将完成,它只是缺少显示匹配结果的能力

问题: 值被正确发送到控制器上的操作,并且
PartialViewResult
对象被正确生成,这意味着没有引发异常,并且它不是
null
。但是
AJAX
代码不接收任何内容

正如您所看到的,服务器正在返回200 HTTP代码,但没有返回任何内容

如果你能给我一个解决办法,我会很高兴的。我有一种感觉,我遗漏了一些非常琐碎的东西,但我目前无法发现问题的根源

代码片段:

PartialView HTML:

<div id="GenericSearch_635749743014462375" class="col-md-12">
<div>
    <form id="genericSearchForm">
        <input id="genericSearchTextBox_GenericSearch_635749743014462375" class="form-control" type="text" placeholder="Nummer, Name, usw." style="width: 100%; max-width: 100%"/>
    </form>
    </div>
    <hr/>
    <div id="genericSearchResults">
        <div class="list-group">
           <div class="list-group-item">
           <h5 class="list-group-item-heading">Keine Resultate gefunden.</h5>
        </div>
    </div>
</div>
控制器上的操作:

[HttpGet]
//[CustomAuthorizeAttribut]
public PartialViewResult Search(SearchSettings searchSettings)
{
    try
    {
        var filters = DefaultSearchFilter.DefaultFilters(searchSettings.ObjectType, searchSettings.SearchValue);
        var itemList = GetList(filters, new Sort(1, true), 25);
        var viewModel = new GenericSearchModel<T>
        {
            SearchResults = itemList,
            SearchSettings = searchSettings
        };
        //assigned to variable for easier debugging
        var viewResult = PartialView("_GenericSearch", viewModel);

        return viewResult;
    }
    catch (Exception ex)
    {
        this.Error(ex);
        return PartialView("_GenericSearch", new GenericSearchModel<T>
        {
            SearchResults = null,
            SearchSettings = searchSettings
        });
    }
}
[HttpGet]
//[自定义属性]
公共PartialViewResult搜索(搜索设置搜索设置)
{
尝试
{
var filters=DefaultSearchFilter.DefaultFilters(searchSettings.ObjectType,searchSettings.SearchValue);
var itemList=GetList(过滤器,新排序(1,true),25);
var viewModel=新的GenericSearchModel
{
SearchResults=itemList,
SearchSettings=SearchSettings
};
//分配给变量以便于调试
var viewResult=PartialView(“\u GenericSearch”,viewModel);
返回查看结果;
}
捕获(例外情况除外)
{
这是一个错误(ex);
返回PartialView(“\u GenericSearch”,新的GenericSearchModel
{
SearchResults=null,
SearchSettings=SearchSettings
});
}
}
对象:

public class SearchSettings
{
    public string SearchUrl { get; set; }
    public string JsonObjectUrl { get; set; }
    public string SearchValue { get; set; }
    //Enum to determinate the type of the dto
    public ObjectType ObjectType { get; set; }
    public bool? IsMultipleSelection { get; set; }
}

public class GenericSearchModel<T> where T: IWebObject
{
    public SearchSettings SearchSettings { get; set; }
    public List<T> SearchResults { get; set; }

}
公共类搜索设置
{
公共字符串搜索URL{get;set;}
公共字符串JsonObjectUrl{get;set;}
公共字符串搜索值{get;set;}
//枚举以确定dto的类型
公共对象类型对象类型{get;set;}
公共布尔?IsMultipleSelection{get;set;}
}
公共类GenericSearchModel,其中T:IWebObject
{
公共搜索设置搜索设置{get;set;}
公共列表搜索结果{get;set;}
}
其他信息:

注意:如果在浏览器地址栏中输入URL,则操作的响应:
Search
也没有内容

Edit1: 我只是觉得应该在调试->异常窗口中的每个
CLR异常上启用visualstudios功能。现在引发的第一个异常是
InvalidOpertaionException
,其他数据:

传入字典的模型项的类型为“GenericSearchModel'1[Address]”,但此字典需要类型为“GenericSearchModel'1[IWebObject]”的模型项

注意:address对象是IWebObject的一个实现


现在我有了问题的根源,这与这个问题的意思完全不同,我将采用不同的方法。因为我需要重新思考GenericSearch构造,所以没有必要对初始问题做进一步的研究(
AJAX
call没有收到任何响应内容)。

您是否尝试在控制器操作中设置断点以确保操作确实被命中?可能是路由问题。GetList方法返回什么?你能发布那段代码吗?是的,正如我在问题中所写的,该操作被正确调用,否则在调用AJAX的代码中我不会得到200响应代码。@freshbm它从api中提取一些数据。不幸的是,我不能在这里发布它的代码。太多了..你能用success()函数代替done()吗?您是否尝试过在控制器操作中设置断点以确保该操作实际被命中?可能是路由问题。GetList方法返回什么?你能发布那段代码吗?是的,正如我在问题中所写的,该操作被正确调用,否则在调用AJAX的代码中我不会得到200响应代码。@freshbm它从api中提取一些数据。不幸的是,我不能在这里发布它的代码。太多了..你能用success()函数代替done()吗?
public class SearchSettings
{
    public string SearchUrl { get; set; }
    public string JsonObjectUrl { get; set; }
    public string SearchValue { get; set; }
    //Enum to determinate the type of the dto
    public ObjectType ObjectType { get; set; }
    public bool? IsMultipleSelection { get; set; }
}

public class GenericSearchModel<T> where T: IWebObject
{
    public SearchSettings SearchSettings { get; set; }
    public List<T> SearchResults { get; set; }

}