【发布时间】:2009-07-09 22:04:17
【问题描述】:
我正在尝试实现类似于 StackOverflow 上的相关问题的功能,我正在 MVC 中执行此操作。
$().ready(function() {
var s = $("#Summary").val();
$("#Summary").blur(function() { QuestionSuggestions(s); });
});
function GetPastIssues(title) {
$(document).ready(function() {
$.ajax({ type: "POST",
url: "/Issue/GetSimilarIssues",
contentType: "application/json; charset=utf-8",
dataType: "xml",
dataType: "json",
data: "{'title':'" + title + "'}",
processData: false,
error: function(XMLHttpRequest, textStatus, errorThrown) { ajaxError(XMLHttpRequest, textStatus, errorThrown); },
success: function(xml) { ajaxFinish(xml); }
});
});
function ajaxFinish(xml) {
if (xml.d != "NO DATA") {
$('#question-suggestions').html(xml.d); //alert(xml.d); // This ALERT IS returning undefined
$('#question-suggestions').show();
}
}
从我的控制器返回的数据是“未定义的”,如 ajaxFinish 中的注释行所示。
我做错了什么?
//[AcceptVerbs(HttpVerbs.Get)]
[JsonParamFilter(Param = "title", TargetType = typeof(string))]
public ActionResult GetSimilarIssues(string title)
{
var issues = _db.GetSimilarIssues(title).ToList();
if (title == null || issues.Count() == 0)
return Json("NO DATA");
string retVal = null;
foreach (Issue issue in _db.GetSimilarIssues(title))
{
retVal += "<div class='answer-summary' style='width: 610px;'>";
retVal += "<a href='Issue.aspx?projid=" + issue.ProjectId.ToString() + "&issuetypeid=" + issue.IssueTypeId.ToString() +
"&issueid=" + issue.IssueId.ToString() + "'>";
retVal += issue.Summary;
retVal += "</a>";
retVal += "</div>";
}
return Json(retVal);
}
编辑:
我认为,如果我能深入了解 StackOverflow 如何实现此 javascript 方法,将有助于我学习和实施解决方案:
function QuestionSuggestions() {
var s = $("#title").val();
if (s.length > 2) {
document.title = s + " - Stack Overflow";
$("#question-suggestions").load("/search/titles?like=" + escape(s));
}
看起来像 Views 文件夹中的“Search”文件夹和名为“Title”的PartialView。 SearchController.cs,方法如下:
public ActionResult titles(string like)
{
// HOW TO IMPLEMENT THIS
return PartialView("Titles");
}
在 Titles.ascx 中显示 html 的内容是什么?
【问题讨论】:
-
我收集到最好的做法是返回一个 Json 对象并让视图负责渲染。鉴于我上面的情况,你如何连接它?我不确定如何在控制器中编写方法以及部分视图的外观以及如何加载它。
标签: asp.net-mvc ajax json