MVC局部视图在IIS7上托管后不显示,但在VS2012开发环境中显示

时间:2014-09-25 09:33:39

标签: c# ajax asp.net-mvc-4 visual-studio-2012

我最近开始在visual studio 2012中使用MVC4。

我有一个HomeController,它有一个强类型的HomeView,在这个HomeView中,我有一个局部视图,当用户从DropDownList中进行选择时显示,部分视图由ajax帖子显示给WCF Web服务。在我的开发环境中这一切都运行得很好但是一旦我将我的项目上传到IIS,当我从下拉列表中选择时没有任何反应,我打开了开发控制台并且我得到了以下错误

  

404 - 找不到文件或目录。您正在寻找的资源   可能已被删除,更改名称或暂时   不可用。

我看过很多帖子,对我的服务器进行了更改,将以下内容添加到我的web.config

<modules runAllManagedModulesForAllRequests="true"></modules>

我仍然得到404错误。

这是从HomeController中调用我的局部视图的动作。

[HttpPost]
public PartialViewResult Audits(int AuditID, int AccountID)
{
    InspectWebService.AuditClient au = new InspectWebService.AuditClient();
    List<InspectWebService.ct_auditGrid> model = au.getAllUserAudits(
        Convert.ToInt32(Request.Cookies["UserInfo"]["UserID"]), 
        AuditID, 
        AccountID).ToList();
    return PartialView("_Audits", model); 
}

这是我的ajax调用显示局部视图的动作

$('#ddlAudits').change(function () {
    var a = $(this);
    var b = $('#ddlAccounts')
    $.ajax({
        url: 'Home/Audits',
        type: 'post',
        data: { 'AuditID': a.val(), 'AccountID': b.val() },
        datatype: 'html',
        success: function (result) { 
            $('#DivAccounts').html(result).enhanceWithin();
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) { 
            alert(result);
        }
     });
});

$('#ddlAccounts').change(function () {
    var a = $('#ddlAudits');
    var b = $(this)
    $.ajax({
        url: 'Home/Audits',
        type: 'post',
        data: { 'AuditID': a.val(), 'AccountID': b.val() },
        datatype: 'html',
        success: function (result) { 
            $('#DivAccounts').html(result).enhanceWithin(); 
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) { 
            alert(result);
        }
    });
});

我只是不明白为什么它在我的开发环境中有效,但一旦上传到我的服务器就没有了。

1 个答案:

答案 0 :(得分:0)

那是因为在IIS上,它找不到您的部分视图文件。

改为使用@ Url.Action。

$('#ddlAudits').change(function () {
    var a = $(this);
    var b = $('#ddlAccounts')
    $.ajax({
        url: '@Url.Action("Audits","Home")',
        type: 'post',
        data: { 'AuditID': a.val(), 'AccountID': b.val() },
        datatype: 'html',
        success: function (result) { 
            $('#DivAccounts').html(result).enhanceWithin();
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) { 
            alert(result);
        }
     });
});