MvcForm为部分视图调用Action,但显示为纯文本

时间:2014-02-11 18:00:59

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

我正在关注名为“开发ASP.NET MVC 4 Web应用程序快速入门”的微软虚拟学院的视频。在第5部分:集成Javascript和MVC 4,他们开始展示如何使用PartialViewResults。我已经完全按照视频中的方式复制了代码,但是,我得到了不同的结果。他们没有显示一些代码(SessionController),我需要自己解决这个问题,所以也许这就是我搞砸的地方。

问题是Html.Action调用的部分视图显示为纯文本而不是HTML。如下 enter image description here

我已经尝试过Html.Action,Html.RenderAction,Html.Partial和Html.RenderPartial,所有这些似乎都给出了相同的结果。有什么线索我在这里做错了吗?我不希望用大量的代码列出这篇文章,所以如果有必要,我会根据要求发布代码。

编辑:请求Razor代码*

步骤1:

@model MVC_Tutorial2.Models.Session
<h3>
    @Model.Title
</h3>
<div>
    @Model.Abstract
</div>
@Html.Action("_GetForSession", "Comment", new { sessionID = Model.SessionID })

步骤2:

@model IEnumerable<MVC_Tutorial2.Models.Comment>
<div id="comments>
    <ul>
        @foreach (var comment in Model) { 
            <li>@comment.Content</li>
    }
    </ul>
    @using (Ajax.BeginForm("_Submit", "Comment", new AjaxOptions() { UpdateTargetId = "comments" })) { 
        @Html.AntiForgeryToken()
        @Html.Action("_CommentForm", new { SessionID = ViewBag.SessionID })
    }
</div>

步骤3:

@model MVC_Tutorial2.Models.Comment
@Html.HiddenFor(m => m.SessionID)
<div>
    @Html.LabelFor(m => m.Content)
    @Html.EditorFor(m => m.Content)
</div>
<button type="submit">Submit Comment</button>

1 个答案:

答案 0 :(得分:1)

如果未在所需脚本中正确链接,您将获得此确切行为。尝试在主视图的顶部添加以下内容(不是部分内容):

<script src="~/Scripts/jquery-1.7.1.min.js" type="text/javascript"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js" type="text/javascript"></script>

显然请确保包含项目中可用的正确jQuery版本。

更新

由于你已经有了脚本,其他一些东西显然是错误的。我注意到的第一件事是:

<div id="comments>

请注意缺少的引号。正如您UpdateTargetId = "comments",这可能是您遇到问题的原因。