PartialView方法返回Null(似乎根本不调用视图)

时间:2013-12-19 20:17:13

标签: c# asp.net-mvc asp.net-mvc-4 asp.net-mvc-partialview

我有一些似乎没有正常工作的代码。我确信我只缺少一些东西,但是我已经把它撞到了太长时间而已经无处可去。

以下是AJAX调用:

$.ajax({
    type: 'POST',
    url: '@Url.Action("GetPartial", "MyPage")',
    async: true,
    data: {
        MyID: 'ABC123'
    },
    error: function (jqXHR, textStatus, errorThrown) {
        alert('Error loading partial for ' + MyId + '\n\n' + jqXHR + '-' + textStatus + '-' + errorThrown);
    }
}).done(function (result) {
    $(data).html(result);
});

以下是MyPageController.cs中的操作:

[HttpPost]
public PartialViewResult GetPartial(string MyID)
{
    return PartialView("ThePartial");
}

在我的Views diretory中,我有一个MyPage子目录,其中包含ThePartial.cshtml。

我在cshtml中放置了断点,但似乎没有被调用。

此外,我已经通过稍微更改我的操作代码验证了PartialView为空:

[HttpPost]
public PartialViewResult GetPartial(string MyID)
{
    PartialViewResult pView = PartialView("ThePartial");
    return pView;
}

然后在“返回”行放置一个断点并查看pView的内容。

以下是局部视图的缩写版本。

@model MyProject.Models.MyModel // There is a breakpoint here
@{
    var x = "testing"; // There is a breakpoint here
    x += " 123"; // There is a breakpoint here
}
<div>@x</div>

我实际上在从未被击中的第一,第三和第四行设置了断点。

我意识到部分是指未包含在动作中的数据模型,而是在实际版本中使用的模型。我从这篇文章中删除它以保持简短,认为模型不是问题所在。这是实际的PartialView调用:

MyData myData = MyModel.GetData(MyID);
PartialViewResult pView = PartialView("ThePartial", myData);

我完全迷失了,并且非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

在部分视图中似乎存在某种语法错误,并且除了不返回视图外,不会以任何方式报告错误。

为了得出这个结论,我做了以下事情:

我创建了一个简单的局部视图,包括:

<div>THIS IS A TEST</div>

然后我让我的Action返回这个视图,并且它成功了。

然后我将旧的(完整的)局部视图中的代码块复制到新的部分视图中,并且一度停止返回任何内容。我现在正在通过代码来缩小错误的位置。

我不得不说,我很不高兴没有以任何方式报道错误。

感谢所有在这里贡献自己想法的人。

答案 1 :(得分:0)

您是否尝试过指定完整的部分视图路径以查看它是否被命中?