Ich bin zur Zeit auf einer Website in MVC zu arbeiten, und ich erlebe einige ProblemeMVC Teilansicht bleibt nicht auf tesame Seite nach Post
Was Ich mag würde erreichen:
Wenn ein item ist in der DropDownListFor ausgewählt, es übertrifft die form.Submit und geht zum RecipeController post "AddIngredient", in diesem HttpPost füge ich die Logik hinzu, um die Zutat in die SelectedIngredients Liste einzufügen. Diese Liste wird dann verwendet, um anschließend an die ListboxFor zu binden.
Was Problem, das ich bin der Begegnung:
Wenn auf einem Element klicken in der DropDownListFor Sie macht geltend, das Formular erfolgreich und geht in die Httppost, das Problem nach ist excecuting die Post geht es in das Verzeichnis/Rezept/AddIngredient/und bleibt nicht auf der Ansicht einreichen
Mein Code:
Submit.cshtml:
<div class="submit-recipe-form">
<div class="add-ingredient">
@Html.Partial("_AddIngredient");
</div>
_AddIngredient.cshtml (Teilansicht):
@model Recepten.Models.IngredientSelectModel
@using (Ajax.BeginForm("AddIngredient", "Recipe", new AjaxOptions() { UpdateTargetId = "add-ingredient", HttpMethod = "Post" }))
{
@Html.LabelFor(model => model.Ingredients, "Add Ingredient")
@Html.DropDownListFor(model => model.SelectedIngredient, Model.Ingredients, new { @onchange = "this.form.submit();" })
}
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
RecipeController:
[HttpPost]
public ActionResult AddIngredient(IngredientSelectModel ing)
{
//Logic
return PartialView(ing);
}
IngredientSelectModel:
public class IngredientSelectModel
{
public RecipeModel Recipe { get; set; }
public IEnumerable<SelectListItem> Ingredients { get; set; }
public int SelectedIngredient { get; set; }
public string addIngredient { get; set; }
public List<int> SelectedIngredients { get; set; }
public IngredientSelectModel()
{
SelectedIngredients = new List<int>();
}
}
Ich habe das Paket jquery unaufdringlich Ajax korrekt installiert und in meinem Bündel enthalten sind, Ich erwarte, dass ich etwas mit der Aussicht in der HttpPost verpasse, aber nicht genau was genau.
Vielen Dank für Ihre Zeit!
EDIT:
Submit.cshtml http://pastebin.com/yS8etDK5
ersetzen Wenn sein die teilweise anstelle oder bleiben auf der gleichen Seite angezeigt wird, bedeutet ' jquery.unobtrusive-ajax.js wird nicht in der Ansicht geladen (oder Sie haben etwas Ungültiges wie verschachtelte Formulare) –
Haben Sie versucht, "@section Skripte {@ Scripts.Render (" ~/bundles/jqueryval ") zu löschen } "Teil in deiner Teilansicht? Vielleicht hat dieser Teil zu Fehlern geführt. – kkakkurt
http://imgur.com/qLraBOV Wie in dem Bild gezeigt jquery.unobtrusive-ajax.js scheint in der Ansicht geladen zu werden, ich habe auch versucht, @ Scripts.Render ("~/Bundles/jqueryval") zu entfernen und zuweisen es in meiner Sicht stattdessen, aber das hat nicht funktioniert. Ich werde überprüfen und sehen, ob ich verschachtelte Formulare habe – josephzigler