2013-02-15 6 views
1

J'ai un problème avec Ajax. Je souhaite créer plusieurs formulaires et remplacer div contenant un après l'avoir soumis avec une vue partielle. Cela fonctionne pour moi quand je n'utilise qu'un seul formulaire. Je ne sais pas ce que je fais mal ici. Peut-être parce que c'est un éditeur personnalisé? Voici mon code, plese essayer de m'aider, j'ai essayé de le faire pendant 2 jours.Ajax dans ASP.NET MVC3 Razor

Index

@model MetriceWeb.Models.TaskInputModel 
@{ 
    ViewBag.Title = "Tasks"; 
} 
<h3> 
    Tasks</h3> 

@if (Model.Values.Count == 0) 
{ 
    <p>No pendings forms for you at the moment</p> 
} 
else 
{ 
    @Html.EditorFor(x => x.Values) 
} 

TaskInputValue (editorfor)

@model MetriceWeb.Models.TaskInputValue 
@{string s = "task" + Model.TaskId;} 

@using (Ajax.BeginForm("GetFromLibrary", "Metrice", new AjaxOptions 
{ 
HttpMethod = "Get", 
UpdateTargetId = s, 
InsertionMode = InsertionMode.Replace 
})) 
{ 
<div class="editor-field" id="@s"> 
@Html.HiddenFor(x => x.TaskId, new { @class = "TaskId" , id = "TaskId" }) 
@Html.HiddenFor(x => x.InputId, new { @class = "InputId" }) 
<h2> 
@Html.DisplayFor(x => x.Task) 
</h2> 
<span>Created: </span> 
@Html.DisplayFor(x => x.Date) 

<div> 
Input Value 

    @Html.EditorFor(x => x.DateValue) 
    @Html.ValidationMessageFor(x => x.DateValue) 
</div> 
<input type="submit" value="Submit" /> 
</div> 
<br /> 
} 

Il est d'entrer dans mon contrôleur méthode où je reviens vue partielle. Après avoir soumis mon div ne remplace pas, le nouveau site est chargé. Quel est le problème ici? S'il vous plaît aidez-moi, j'ai un grand besoin.

+1

Veuillez vérifier que le 'jquery.unobtrusive-ajax.js' est référencé en charge pour votre page! Pouvez-vous également poster votre méthode de contrôleur? – nemesv

+0

Oh mon Dieu. Je suis vraiment stupide parfois. Je n'avais pas inclus cette référence. Merci et je suis désolé j'ai pris votre temps avec mon problème stupide. –

Répondre

1

Pour les correctement Ajax aides comme Ajax.BeginForm travail (par exemple, l'envoi d'une requête AJAX) vous avez besoin de référence dans votre vue fichier JavaScript suivant

jquery.unobtrusive-ajax.js 

(et bien sûr avant que jquery)

de l'Unobtrusive Ajax in ASP.NET MVC 3

Une note intéressante: car il n'y a pas JavaScript réelle émise lorsque vous utilisez Ajax discrète, si vous oubliez d'inclure un ou l'autre script , vous ne verrez aucune erreur lors de la tentative de soumission de la requête Ajax ; il se comportera simplement comme une requête non-Ajax.

Questions connexes