これは私に困惑しているものです。このための方法が組み込まれているのだろうかと思います。ASP.NETフォームは、モデルの一部として送信します
あなたは
public class Package
{
public A AObject { get; set; }
public B BObject { get; set; }
}
Package
クラスがあり、このPackage
を使用するビューを持っていると言います。
public ActionResult Action()
{
return View(new Package());
}
ビューはこのモデルを受け入れ、2つのフォームを持ちます。
@model Path.To.Package
@Html.BeginForm("SubmitA", "MyController")
{
@Html.TextBoxFor(m => m.AObject.SomeProperty);
<input type="submit" />
}
@Html.BeginForm("SubmitB", "MyController")
{
@Html.TextBoxFor(m => m.BObject.AnotherProperty);
<input type="submit" />
}
を1は、この質問せずに動作します、引数としてPackage
を取る上で必要な2つのアクションを作成した場合は...
public JsonResult SubmitA(Package items) { ... }
public JsonResult SubmitB(Package items) { ... }
しかしSubmitA
でBObjectはnullになり、SubmitB
にAObjectは次のようになりヌル。
私の質問は、モデルの一部だけを送信できるかどうかです。だから、最初の形式はだけなので、あなたが実際に次のアクションを経由してこれらに達する可能性があるAObject
と第二BObject
を提出する:
public JsonResult SubmitA (A a) { ... }
public JsonResult SubmitB (B b) { ... }
なぜ2つのフォームがありますか?フォームは1つしか送信できません。しかし、はい、 'BindAttribute'の' Prefix'プロパティを使うことができます - 'public JsonResult SubmitA([Bind(Prefix =" AObject ")] A){...}' –
@StephenMuecke 2つのフォームのシナリオはちょっと長いですが、はい、1つのフォームを(一度に)提出する必要がありますが、そのフォームで呼び出すアクションに適切なタイプ/オブジェクトを渡すだけです(私は理にかなっている)。それ以外の場合は、プレフィックスのものと思っています!あなたは答えの下に投稿することができます、いくつかの点を得る:) – NemanjaT
@ NemanjaTあなたの場合でも、それは提出されたモデルの一部です。送信されたフォームデータには、送信されたフォームフィールドに対応する値しかありません。 – sachin