これらのコードを書きました。お役に立てば幸いです。どのメソッドが実行されるかを理解するために隠しフィールドを使用しました。
これらは私のモデルです:
namespace MvcSameController.Models
{
public class RouteModel
{
public SampleModel1 SampleModel1 { get; set; }
public SampleModel2 SampleModel2 { get; set; }
}
public class SampleModel1
{
public int Id { get; set; }
public string Name { get; set; }
}
public class SampleModel2
{
public int Id { get; set; }
public string Surname { get; set; }
}
}
これはコントローラーです:
using System.Web.Mvc;
using MvcSameController.Models;
namespace MvcSameController.Controllers
{
public class SameController : Controller
{
//
// GET: /Same/
public ActionResult Index()
{
return View();
}
[HttpPost]
public void Index(RouteModel routeModel, string type)
{
if (type == "1")
{
//Code for type 1
}
else if (type == "2")
{
//Code for type 2
}
}
}
}
とビュー:
@{
ViewBag.Title = "Index";
}
@model MvcSameController.Models.RouteModel
<section id="loginForm">
<h2>Type1 </h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
@Html.Hidden("type",1)
<fieldset>
<legend>Type1 Form</legend>
<ol>
<li>
@Html.LabelFor(m => m.SampleModel1.Name)
@Html.TextBoxFor(m => m.SampleModel1.Name)
@Html.ValidationMessageFor(m => m.SampleModel1.Name)
</li>
</ol>
<input type="submit" value="Run Method1" />
</fieldset>
}
</section>
<section id="loginForm">
<h2>Type2</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
@Html.Hidden("type",2)
<fieldset>
<legend>Type2 Form</legend>
<ol>
<li>
@Html.LabelFor(m => m.SampleModel2.Surname)
@Html.TextBoxFor(m => m.SampleModel2.Surname)
@Html.ValidationMessageFor(m => m.SampleModel2.Surname)
</li>
</ol>
<input type="submit" value="Run Method2" />
</fieldset>
}
</section>
ここから私のサンプルをダウンロードできます