MVC4 - Ajax.BeginForm et vue Partielle donne 'undefined'
Je suis en train de travailler sur une activité de la réservation et j'ai de la difficulté à l'aide d'ajax.beginform avec une vue partielle. Lorsque je clique sur envoyer, il va juste vers une nouvelle page et il y a un 'undefined' dans le coin supérieur gauche. J'ai "../../Scripts/jquery.unobtrusive-ajax.min.js" dans ma page de présentation. Ce que je veux faire, c'est quand l'utilisateur soumet le formulaire, le div "AjaxTest" est mis à jour avec la vue partielle et le formulaire est sous les résultats de recherche.
Voici ce que j'ai jusqu'à présent (j'ai pris toute la structure et le style de sorte que son plus facile à lire):
Vue Principale - Activités
@model Project.Models.ActivityModel
<div id="AjaxTest"></div>
@using (Ajax.BeginForm(new AjaxOptions
{
UpdateTargetId = "AjaxTest",
InsertionMode = InsertionMode.Replace,
HttpMethod = "POST"
}))
{
@Html.ValidationSummary(true)
@Html.TextBoxFor(x => x.Activity_CityName)
<div class="editor-label">
<strong>@Html.LabelFor(x => x.Activity_StartDate)</strong>
</div>
<div class="editor-field">
<input id="checkin" type="text" name="Activity_StartDate" />
</div>
@Html.TextBoxFor(x => x.Activity_EndDate)
@Html.DropDownListFor(x => x.Activity_NumAdults, AdultNum)
@Html.DropDownListFor(x => x.Activity_NumChildren)
@Html.DropDownListFor(x => x.Activity_ChildAge1, ChildAge)
@Html.DropDownListFor(x => x.Activity_ChildAge2, ChildAge)
@Html.DropDownListFor(x => x.Activity_ChildAge3, ChildAge)
<div class="submitbutton">
<input data-inline="true"type="submit" id="activity_search" value="Search" />
</div>
}
Contrôleur
[HttpPost]
public ActionResult Activities(ActivityModel activitysubmission) {
return PartialView("PartialActivities_Success", activitysubmission);
}
Vue Partielle - PartialActivities_Success
@model Project.Models.ActivityModel
<p>City: @Model.Activity_CityName</p>
<p>StartDate: @Model.Activity_StartDate</p>
<p>EndDate: @Model.Activity_EndDate</p>
<div>
<p><strong>Ticket</strong></p>
<p>Number of Adults: @Model.Activity_NumAdults</p>
<p>Number of Children: @Model.Activity_NumChildren</p>
<p>Child 1 age: @Model.Activity_ChildAge1</p>
<p>Child 2 age: @Model.Activity_ChildAge2</p>
<p>Child 3 age: @Model.Activity_ChildAge3</p>
</div>
Scripts dans la Page de Mise en Page
<script src="../../Scripts/jquery.unobtrusive-ajax.min.js" type="text/javascript"> </script>
<script src="../../Scripts/xdate.js" type="text/javascript"></script>
<script src="../../Scripts/xdate.i18n.js" type="text/javascript"></script>
<script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Scripts/js")"></script>
<script>
$(document).bind("mobileinit", function() {
//As of Beta 2, jQuery Mobile's Ajax navigation does not work in all cases (e.g.,
//when navigating from a mobile to a non-mobile page, or when clicking "back"
//after a form post), hence disabling it.
$.mobile.ajaxEnabled = true; //originally false.
});
</script>
J'ai mis à jour ma question. Vous pouvez voir les scripts maintenant dans l'ordre je les ai mis
Ne pas mélanger la subordination et directe des références de script. Essayer une.
Ok, j'ai pris le bundle et ajouté tous les scripts individuellement. Je suis encore en train de "undefined" dans le coin supérieur gauche.
votre vue partielle a une fermeture de div à la fin. C'est qu'une faute de frappe?
OriginalL'auteur J-Y | 2012-06-14
Vous devez vous connecter pour publier un commentaire.
J'ai remarqué une erreur dans le code. Votre div id
Ajaxtest
mais le paramètre que vous êtes de passage à BeginRequest estAjaxTest
le T est capitalOriginalL'auteur Wiz
Êtes-vous en utilisant MVC 4? Je voudrais assurez-vous que UnobtrusiveJavaScriptEnabled est définie sur true dans votre WebConfig de fichier. Je crois que c'est par défaut, si. La seule autre chose que je peux penser à est de vérifier que vous avez d'autres fichiers jQuery et qu'ils sont en train d'être chargé dans le bon ordre. Si vous chargez votre unobrusive jQuery fichier avant de le principal il ne fonctionne pas.
OriginalL'auteur DBueno
Vous n'avez pas spécifié de l'action à appeler lors de la publication de l'Ajax formulaire. Essayez de la remplacer par ceci:
OriginalL'auteur Tom van Enckevort