Domanda

Voglio avere due moduli separati su una singola pagina Creazione e un'azione nel controller per ogni modulo.

Nella vista:

<% 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" />
<% } %>
.

Nel controller:

// 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()));
}
.

Risultati in "The current request for action 'MyMethod' on controller type 'MyController' is ambiguous between the following action methods" - Errore o l'azione Creazione errata è chiamata.

Soluzioni?

    .
  • Combina quei due post creano azioni in un unico ActionResult Create(Product product, string genericInput);
  • Nome uno del post Creazioni creazioni in modo diverso e aggiungi il nuovo nome al corrispondente Html.BeginForm()

Non ho idea di quali sono gli avvertimenti in questi.Come risolveresti questo?

È stato utile?

Soluzione

In realtà, credo che tu possa farlo se sei più specifico con la tua chiamata BeginForm ().

Using(Html.BeginForm<ControllerName>(c => c.Create((Product)null)) { } 
Using(Html.BeginForm<ControllerName>(c => c.Create((string)null)) { }
.

Altri suggerimenti

Non è possibile avere due azioni con lo stesso nome e verbo che differiscono solo con i tipi di argomenti.Imho nominando le tue due azioni in modo diverso sarebbe una buona idea assumendo che svolgere compiti diversi e prendono ingressi diversi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top