MVC 4 (razor) - Controller ist wieder ein partialview aber die gesamte Seite aktualisiert wird
Ich bin neu in der MVC 4 und der Razor - engine, so könnte dies eine dumme Frage.
Was ich versuche zu erreichen ist, ich habe eine Seite mit einem drop-down-Liste und einen button. Ein Klick auf die Schaltfläche ruft den controller übergeben wird der Wert ausgewählt. Der controller sollte die Rückkehr einer teilweisen Ansicht und nur den unteren Teil der Seite aktualisiert werden soll.
Aber ich finde, dass die gesamte Seite wird ersetzt mit nur teilweise html-Ansicht. Dh. Ich bekomme meine Liste der Ergebnisse angezeigt, aber ich verliere meine dropdownlist von Projekten und submit-button. Ich habe versucht, einen Verweis auf jquery und unaufdringlich scripts (was ich nicht glaube, ich muss in MVC 4), aber das ändert nichts an der Seite (ie. das dropdownlist-und-Taste bleiben, und es werden keine Ergebnisse angezeigt).
Teil meine Ansicht:
@using (Ajax.BeginForm("GetProjectStories", "MyController", new AjaxOptions{ UpdateTargetId = "projectUserStories"}))
{
<fieldset>
<legend>Select Project</legend>
<div>
@Html.DropDownList("ProjectReference", (IEnumerable<SelectListItem>)Model.ProjectList)
</div>
<p>
<input name="GetStoriesButton" type="submit" value="Get Stories" />
</p>
</fieldset>
}
@if (Model != null && Model.UserStories != null)
{
<div id="projectUserStories">
@{Html.RenderPartial("_UserStoryList", Model);}
</div>
}
Mein controller:
public ActionResult GetProjectStories(ProjectViewModel model)
{
var stories = MyService.GetProjectUserStories(model.ProjectReference).Results;
model.UserStories = stories;
return PartialView("_UserStoryList", model);
}
Meine Teilansicht Inhalt, enthält eine html-Tabelle und der Verweis auf das Modell.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie Sie planen, zu aktualisieren
projectUserStories
, wenn der code-block nicht gerendert werden konnte, versuchen Sie dies:Überprüfen Sie auch alle benötigten js-Dateien für die Microsoft Ajax-Helfer, zum Beispiel diese:
Schauen Sie auch unter:
Also versuchte ich darunter, dass unobtrusive Skript, und zur Festsetzung der Tatsache, dass ich nicht Rendern, div, wenn das Objekt null war, aber es noch nicht funktioniert.
Also wechselte ich auf die Verwendung von jquery.