23

私は使用できることを理解して@Html.HiddenFor(m => m.parameter)おり、フォームが送信されると、そのパラメーターがコントローラーに渡されます。私のモデルには多くのプロパティがあります。

モデル全体を一度にコントローラーに渡す短い方法はありますか、それとも毎回 1 つずつ行う必要がありますか?

4

5 に答える 5

27

モデル全体がコントローラーに渡されますが、入力フィールドまたは非表示フィールドによってバインドされていないプロパティの値は失われます。

クライアント側でフォームのプロパティをバインドするか、サーバー側でエンティティを再フェッチする必要があります。

のようなものを求めているようですが@Html.HiddenFor(m => m.Model)、それは不可能です。ごめん

覚えておくべきことの 1 つは、隠しフィールドが大量にある場合、実際に必要とするよりも多くのデータをビューに送信している可能性があることです。ビューモデルの採用を検討する

于 2013-03-20T15:19:53.357 に答える
0

これはすでに組み込まれています。次のモデルを検討してください。

public class MyModel
{
    public string PropertyA { get; set; }
    public string parameter { get; set; }
}

次に、このアクションを検討してください。

[HttpPost]
public ActionResult PostSomeData(MyModel model)
{
}

MVC は を活用し、可能な場合はクラスFormCollectionを埋めます。フォームにMyModelがない場合はになります。ただし、プロパティの があるため、入力されます。PropertyAnullinputparameter

于 2013-03-20T15:20:42.997 に答える
0

FORM 要素を使用している場合は、モデル全体が投稿されます。モデルを使用する要素は明らかにフォーム要素内にある必要があります

JQueryを使用して、自分でフォームをPOSTすることもできます

それについては、この他のスタックの問題を参照してください:jQuery AJAX送信フォーム

「Alfrekjv」によるアンサーをよく見てください。

于 2013-03-20T15:20:13.680 に答える
0

必要なプロパティのみを確認できます。

if (this.ModelState.IsValidField("Name"))
{
     // .....
}

それ以外の:

if (this.ModelState.IsValid)
{
     // .....
}
于 2018-02-21T18:44:34.830 に答える