私は使用できることを理解して@Html.HiddenFor(m => m.parameter)
おり、フォームが送信されると、そのパラメーターがコントローラーに渡されます。私のモデルには多くのプロパティがあります。
モデル全体を一度にコントローラーに渡す短い方法はありますか、それとも毎回 1 つずつ行う必要がありますか?
私は使用できることを理解して@Html.HiddenFor(m => m.parameter)
おり、フォームが送信されると、そのパラメーターがコントローラーに渡されます。私のモデルには多くのプロパティがあります。
モデル全体を一度にコントローラーに渡す短い方法はありますか、それとも毎回 1 つずつ行う必要がありますか?
モデル全体がコントローラーに渡されますが、入力フィールドまたは非表示フィールドによってバインドされていないプロパティの値は失われます。
クライアント側でフォームのプロパティをバインドするか、サーバー側でエンティティを再フェッチする必要があります。
のようなものを求めているようですが@Html.HiddenFor(m => m.Model)
、それは不可能です。ごめん
覚えておくべきことの 1 つは、隠しフィールドが大量にある場合、実際に必要とするよりも多くのデータをビューに送信している可能性があることです。ビューモデルの採用を検討する
これはすでに組み込まれています。次のモデルを検討してください。
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
FORM 要素を使用している場合は、モデル全体が投稿されます。モデルを使用する要素は明らかにフォーム要素内にある必要があります
JQueryを使用して、自分でフォームをPOSTすることもできます
それについては、この他のスタックの問題を参照してください:jQuery AJAX送信フォーム
「Alfrekjv」によるアンサーをよく見てください。
必要なプロパティのみを確認できます。
if (this.ModelState.IsValidField("Name"))
{
// .....
}
それ以外の:
if (this.ModelState.IsValid)
{
// .....
}