Je veux avoir deux formulaires distincts sur une seule page de création et une action dans le contrôleur pour chaque formulaire.Comment prendre en charge plusieurs formulaires qui ciblent le même Créer une action sur la même page?
De l'avis:
<% using (Html.BeginForm()) { %>
// Contents of the first (EditorFor(Model.Product) form.
<input type="submit" />
<% } %>
<% using (Html.BeginForm()) { %>
// Contents of the second (generic input) form.
<input type="submit" />
<% } %>
Dans le contrôleur:
// Empty for GET request
public ActionResult Create() {
return View(new ProductViewModel("", new Product()));
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(Product product) {
return View(new ProductViewModel("", product));
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(string genericInput) {
if (/* problems with the generic input */) {
ModelState.AddModelError("genericInput", "you donkey");
}
if (ModelState.IsValid) {
// Create a product from the generic input and add to database
return RedirectToAction("Details", "Products", new { id = product.ID });
}
return View(new ProductViewModel(genericInput, new Product()));
}
Résultats dans "The current request for action 'MyMethod' on controller type 'MyController' is ambiguous between the following action methods"
- erreur ou la mauvaise action Créer est appelée.
Solutions?
- Combiner ces deux POST Créer des actions en public un
ActionResult Create(Product product, string genericInput);
- Nom un des POST Créer des actions différemment et ajouter le nouveau nom correspondant
Html.BeginForm()
Je ne sais pas quelles sont les mises en garde dans ceux-ci. Comment résoudriez-vous cela?
Hey! Merci pour l'info. Malheureusement, je n'ai pas réussi à trouver une version générique 'Html.BeginForm' de la méthode d'extension 'Html.BeginForm'. Pourriez-vous me dire où je peux trouver cette extension? J'ai essayé les deux, MVC 2 et 3. –
randomguy
MVC Futures. Vous pouvez le trouver à http://aspnet.codeplex.com/releases/view/41742 – ARM