1 ページに 2 つのフォームがあります。どちらにも独自のプロパティと独自の送信アクションがありますが、両方のフォームで共通のプロパティがいくつかあります。
ビュー内の両方のフォームにプロパティを共有する単一のビューモデルを使用して、2 つのフォームでビューを構築する方法はありますか?
実際にはフィールドが複製されており、jquery を使用して両方のフィールドの値の変更を複製する必要があります。
ありがとう。
1 ページに 2 つのフォームがあります。どちらにも独自のプロパティと独自の送信アクションがありますが、両方のフォームで共通のプロパティがいくつかあります。
ビュー内の両方のフォームにプロパティを共有する単一のビューモデルを使用して、2 つのフォームでビューを構築する方法はありますか?
実際にはフィールドが複製されており、jquery を使用して両方のフィールドの値の変更を複製する必要があります。
ありがとう。
これを実現するには、HtmlPrefix を使用できます。
としてモデルを作成しました
public class TestModel
{
[Required]
public int Id { get; set; }
[Required]
public string Name { get; set; }
}
コントローラーでは、フォームごとに 1 つの GetMethod と 2 つの post メソッドが必要ですが、BindPrefixは異なります。
public ActionResult TestLoad()
{
TestModel model = new TestModel();
return View(model);
}
public ActionResult TestA([Bind(Prefix = "A")]TestModel model)
{
return View("TestLoad",model);
}
public ActionResult TestB([Bind(Prefix="B")]TestModel model)
{
return View("TestLoad",model);
}
<table> <tr> <td> @{Html.ViewData.TemplateInfo.HtmlFieldPrefix="A";} @{Html.RenderPartial("PartialA");} </td> <td> @{Html.ViewData.TemplateInfo.HtmlFieldPrefix="B";} @{Html.RenderPartial("PartialB");} </td> </tr> </table>
両方の部分ビューはまったく同じですが、データを異なるアクションに投稿することを除いて (コントローラーで定義されているように)
プロジェクトを実行すると、適切な出力が得られるはずです。