@Html.HiddenFor(m => m.parameter)
を使用でき、フォームが送信されると、そのパラメーターがコントローラーに渡されることを理解しています。私のモデルには多くのプロパティがあります。
モデル全体を一度にコントローラーに渡すより短い方法がありますか、それとも毎回それを行う必要がありますか?
モデルはコントローラ全体に渡されますが、入力フィールドまたは非表示フィールドにバインドされていないプロパティの値は失われます。
クライアント側でフォームのプロパティをバインドするか、サーバー側でエンティティを再取得する必要があります。
@Html.HiddenFor(m => m.Model)
のようなものを求めているようですが、それは不可能です。ごめんなさい
覚えておくべきことの1つは、大量の非表示フィールドがある場合、実際に必要なデータよりも多くのデータをビューに送信している可能性があることです。ビューモデルの採用を検討する
これを見る他の人は、非表示のdivで@ Html.EditorForModel()を実行できます。また、モデルの各オブジェクトプロパティに対して@ Html.EditorFor(model => model.ObjectProperty)を使用する必要があります。
<div hidden="hidden">
@Html.EditorForModel()
@Html.EditorFor(model => model.ObjectProperty)
@Html.EditorFor(model => model.ListOfObjectsProperty)
</div>
必要なプロパティのみを確認できます。
if (this.ModelState.IsValidField("Name"))
{
// .....
}
の代わりに:
if (this.ModelState.IsValid)
{
// .....
}
FORM要素を使用している場合、モデル全体がポストされます。モデルを使用する要素は、明らかにフォーム要素内にある必要があります
POST JQueryを使用して自分で言うフォーム
それについては、この他のスタックの問題を参照してください: jQuery AJAX submit form
「Alfrekjv」によるanwserをよく見てください
これはすでに組み込まれています。次のモデルを検討してください。
public class MyModel
{
public string PropertyA { get; set; }
public string parameter { get; set; }
}
そして、次のアクションを検討してください。
[HttpPost]
public ActionResult PostSomeData(MyModel model)
{
}
MVCはFormCollection
を活用し、可能な場合はMyModel
クラスに入力します。フォームにPropertyA
がない場合は、null
になります。ただし、input
プロパティにparameter
があるため、入力されます。