名为Action for PartialView的ASP.Net MVC5 Ajax不返回响应内容

时间:2015-08-12 11:44:50

标签: c# jquery ajax asp.net-mvc

情境: 我正在实施搜索功能。一旦用户停止输入,搜索值和一些其他值将以AJAX传递给控制器​​。由于下面描述的问题,工作即将完成,它根本无法显示匹配结果。

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

Screenshot debug with Chrome-Tools

正如您所看到的,服务器正在返回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>

JS AJAX:

function searchValue(searchId, value) {
    $.ajax({
        method: 'GET',
        url: '/Web/Search',
        data: {
            SearchUrl: '/Web/Search',
            JsonUrl: '/Web/GetJSON',
            SearchValue: value,
            ObjectType: 'Address',
            IsMultipleSelection: 'False'
        },
        contentType: "application/json; charset=utf-8"
    }).done(function(response, status, xhr) {
        console.log(status);
        console.log(response);
    }).fail(function(xhr, ajaxOptions, thrownError) {
        console.log(xhr.getAllResponseHeaders);
        console.log(xhr.error);
        console.log(xhr.status);
        console.log(thrownError);
    });
}

对控制器的行动:

[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
        });
    }
}

物件:

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; }

}

其他信息:

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

EDIT1: 我只是认为我应该启用Visual Studios功能来打破调试中的每个CLR Exception - &gt;例外窗口。现在抛出的第一个异常是InvalidOpertaionException,附加数据:

  

传递到字典中的模型项的类型是&#34; GenericSearchModel&#39; 1 [地址]&#34;,但是这个字典需要类型为&#34; GenericSearchModel&#39; 1的模型项[IWebObject ]&#34;

要注意:地址对象是IWebObject的实现。

现在我有问题的根源,这与这个问题意义完全不同,我采用了不同的方法。由于我需要重新考虑GenericSearch构造,因此无需对初始问题进行进一步研究(AJAX调用未收到任何响应内容)。

0 个答案:

没有答案