Dans mon projet ASP.Net MVC je suit ViewModeldemande multiple ajax à partir d'une vue de rasoir ayant modèle IEnumerable/viewmodel
public class ApproveItemViewModel
{
[Required]
public int ItemId { get; set; }
[Required]
public string ItemCode { get; set; }
}
Je suivant deux méthodes dans le contrôleur
[HttpGet]
public ActionResult ListPendingItems()
{
var items = new List<ApproveItemViewModel>();
//add few items here in above list
return View(vms);
}
[HttpPost]
public JsonResult ApproveItem(ApproveItemViewModel viewmodel)
{
return Json(new { success = success }, JsonRequestBehavior.AllowGet);
}
Maintenant, dans mon rasoir voir ce que je veux est d'appeler la méthode ApporveItem en utilisant des appels Ajax pour chaque élément individuel. J'ai donc créé plusieurs formes ajax en utilisant le code ci-dessous.
@model IEnumerable<ApproveItemViewModel>
@foreach (var item in Model)
{
using (Ajax.BeginForm("ApproveItem", new AjaxOptions()
{
InsertionMode = InsertionMode.Replace,
HttpMethod = "POST",
UpdateTargetId = "dane"
}))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<table>
<tr>
<td>@Html.LabelFor(m => item.ItemId)</td>
<td>@Html.DisplayFor(m => item.ItemId)</td>
</tr>
<tr>
<td>@Html.LabelFor(m => item.ItemCode)</td>
<td>@Html.TextBoxFor(m => item.ItemCode))</td>
</tr>
<tr>
<td><input type="submit" value="Approve" /></td>
</tr>
</table>
}
}
Cependant, dans le paramètre de méthode d'action du contrôleur I obtenir à la fois ItemId et ItemCode que respectivement 0 et null. Quel est le problème ici, quelqu'un pourrait-il vous aider s'il vous plaît? Comment pouvons-nous passer le viewmodel à l'action en utilisant ajax?
Vous avez inclus le **@Html.AntiforgeryToken**, alors assurez-vous que votre demande contient le ** _ ** requestVarificationToken ainsi. –
Vous voyez n'a aucun sens. Vous ne pouvez publier qu'un formulaire à la fois, alors pourquoi générez-vous un formulaire pour chaque article de votre collection? Le modèle dans votre vue est 'List' donc la méthode POST doit être 'publique JsonResult ApproveItem (List viewmodel)' et vous générez les contrôles de formulaire dans une boucle 'for' ou' EditorTemplate' à l'intérieur d'un formulaire (un message de retour toutes les modifications à la fois) –
Vous pouvez également générer le tableau en tant que texte et utiliser un formulaire modal pour modifier un élément sélectionné et le renvoyer à public JsonResult ApproveItem (ApproveItemViewModel viewmodel) 'Bien que votre méthode suggère tout ce que vous voulez faire 'Approuver' un article alors pourquoi l'utilisateur peut-il éditer les propriétés 'ItemId' et' ItemCode'? –