Ich versuche, eine Funktion ähnlich den verwandten Fragen zu StackOverflow zu implementieren, mache ich dies in MVC.Wie bekomme ich HTML von ActionResult in Controller
$().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();
}
}
Die Daten von meinem Controller zurückgegeben wird ist ‚undefiniert‘, wie durch die Linie in kommentierten ajaxFinish gezeigt.
Was mache ich falsch?
//[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);
}
EDIT:
Ich denke, was mir helfen wird, eine Lösung für mein senario lernen und implementieren, wenn ich einen kleinen Einblick in bekommen, wie Stackoverflow diese Javascript-Methode implementiert:
function QuestionSuggestions() {
var s = $("#title").val();
if (s.length > 2) {
document.title = s + " - Stack Overflow";
$("#question-suggestions").load("/search/titles?like=" + escape(s));
}
Sieht aus wie ein 'Suche' Ordner im Ordner Ansichten und eine PartialView namens 'Titel '. Ein SearchController CS- mit folgenden Methode:
public ActionResult titles(string like)
{
// HOW TO IMPLEMENT THIS
return PartialView("Titles");
}
Was geht in der Titles.ascx die HTML angezeigt werden?
Ich sammle, dass die beste Praxis ist, ein JSON-Objekt zurückgeben und eine Sicht auf das Rendering kümmern. Wie schaffst du es oben mein Szenario oben? Ich bin mir nicht sicher, wie ich die Methode in den Controller schreiben soll und wie die Teilansicht aussehen und wie sie geladen werden soll. – Picflight