【发布时间】:2014-06-24 09:22:18
【问题描述】:
我有一个期望返回 HTML 的 jQuery Ajax 方法。 js 函数 url 转到 ASP.NET MVC 中的 JsonResult 方法。我正在使用 stringbuilder 来构建 HTML,当我在 VS 中使用 watch 时它看起来是正确的。但是,当它将 HTML 返回到页面时,我认为它没有被正确解码,它不是锚标记列表。
我的 javascript
function getPanDocs(memberNum) {
$.ajax({
type: "GET",
url: '/Home/GetPandoraDocs',
dataType: 'html',
data: {
MembershipNumber: memberNum
},
success: function (success) {
$('.pandoraDoc' + memberNum).html(success);
}
});
控制器方法
[HttpGet]
public JsonResult GetPandoraDocs(string MembershipNumber)
{
Business.Pandora.Pandora p = new Business.Pandora.Pandora();
string DocLinks = p.GetDocsById(MembershipNumber);
return Json(new { success = DocLinks }, JsonRequestBehavior.AllowGet);
}
遍历实体集和构建锚标签的类方法
public string GetDocsById(string MembershipNumber)
{
DataLayer.Pandora.Pandora Pandora = new DataLayer.Pandora.Pandora();
List<vwPandora2CheckOff> PandoraList = Pandora.GetPandoraDocsById(MembershipNumber);
StringBuilder sb = new StringBuilder();
sb.AppendLine("<ul>");
foreach (var item in PandoraList)
{
sb.AppendLine("<li>");
string r = item.StoragePath.Replace("\\\\s-documation\\IME_Pandora", "http://pandora.imeche.org/fileshare");
sb.AppendLine("<a href=\" " + r + item.StorageName + "\" target=\"_blank\" >");
sb.AppendLine("link to document");
sb.AppendLine("</a>");
sb.AppendLine("</li>");
}
sb.AppendLine("</ul>");
return sb.ToString();
}
我的问题是html没有正确渲染,不确定是c#代码还是js代码错误。
【问题讨论】:
-
如果您希望它是 HTML,为什么要返回 JSON 字符串?只需更改为
ActionResult并将其作为部分返回。 -
@AndreiV 如果我的方法类型是 ActionResult,我还需要返回 Json。我会试试你的建议。
-
不,不需要 JSON。
-
你是对的。试试这个:
return ContentResult(DocLinks, "text/html");. -
@AndreiV 谢谢你的工作。需要更改控制器中的逻辑。我完全按照原样保留了我的 javaScript。
标签: c# jquery html asp.net-mvc-3 decode