1つの作成ページに2つの別々のフォームを配置し、フォームごとにコントローラーに1つのアクションを配置したいと思います。
ビューで:
<% 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" />
<% } %>
コントローラ内:
// 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()));
}
結果"The current request for action 'MyMethod' on controller type 'MyController' is ambiguous between the following action methods"
-エラーまたは間違った作成アクションが呼び出されます。
ソリューション?
- これら2つのPOSTCreateアクションを1つのパブリックに結合します
ActionResult Create(Product product, string genericInput);
- POST作成アクションの1つに別の名前を付け、対応するアクションに新しい名前を追加します
Html.BeginForm()
これらの注意点が何であるかわかりません。これをどのように解決しますか?