【发布时间】:2012-07-19 17:56:22
【问题描述】:
我知道前两个问题涉及嵌套部分视图,但解决方案不适用于我的设计(这可能不是最好的,但我不确定如何调整它)。
背景:
我收集用户的问卷回复,并将它们作为 xml 文件存储在 sql server 上。
我有一个局部视图,它加载一个包含给定用户的所有响应的表,这个局部视图用响应日期、xml 响应文档的链接、问卷名称、xml 问卷文档的链接(问卷信息从不同的表中提取)和一个 Ajax ActionLink,它重定向到解析两个相关 xml 文档以在第二个局部视图中打印出问题和答案列表(即可视化响应以供人类阅读)的操作。
第一个局部视图在表格下方包含一个 div,我希望用第二个局部视图填充 Ajax.ActionLink 的 onclick。
问题:
答案正确呈现,但是部分视图被加载到一个全新的页面中,没有任何样式。
这个嵌套问题的其他解决方案使用 RenderPartial() 但是我使用 return PartialView()
代码:
第一部分视图:
<table>
<thead>
<tr><th>headers with other info</th>
<th>Display(/th>
<tr>
</thead>
<tbody>
<tr><td>cells with other info</td>
<td>@Ajax.ActionLink("View", "DisplayResponse","HealthStatus", new { respID = item.UniqueID,qVersion=item.QuestionnaireVersion, qname = item.QuestionnaireName }, new AjaxOptions { UpdateTargetId = "responseDisp" })</td>
</tbody>
</table>
<div id="responseDisp"></div> <--- **This is the div I wish to populate, does anyone know why it's not working?**
DisplayResponse Action(没有解析xml文档的逻辑)
public ActionResult DisplayResponse(Guid respID, int qVersion, String qname) {
var allResponses = ZData.Responses;
var response = (from r in allResponses
where r.UniqueID == respID
select r
).First();
//geting an XML questionnaire document
var questionnaireDetails = ZodiacData.Questionnaires;
var questionnaire = (from q in questionnaireDetails
where q.Name == qname && q.Version == qVersion
select q
).First();
//creating XMLDocument to read the questionnaire
XmlDocument xqdoc = new XmlDocument();
xqdoc.LoadXml(questionnaire.Xml);
XmlElement qroot = xqdoc.DocumentElement;
ViewBag.qroot = qroot;
XmlDocument xrdoc = new XmlDocument();
xrdoc.LoadXml(response.Raw);
XmlElement rroot = xrdoc.DocumentElement;
ViewBag.rroot = rroot;
return PartialView("_PrintedResponse");
}
如果有任何帮助,我将不胜感激!
【问题讨论】:
-
检查
jquery.unobtrusive-ajax.js文件是否包含在您的视图中,因为该文件包含@Ajax.ActionLink所需的js函数 -
你的部分有模型吗?我没有看到你向部分传递任何东西。
-
@nemesv:谢谢!就是这样,好尴尬。如果您想将其作为答案,我会接受。
-
@anAgent:不,我没有使用视图 atm,部分原因是我仍然习惯于 mvc 结构,部分原因是我试图不让它过于复杂。我应该如何在这里使用模型?
-
@Nieszka - 我在下面添加了一个示例和信息。我希望它有所帮助。
标签: asp.net-mvc-3 razor asp.net-ajax partial-views