1

次のViewModelがあります:

public class MyViewModel
{
    public int Id { get; set; }
    public string Title { get; set; }
    public int ParentClassId { get; set; }
    public List<AnotherClass> AnotherClassItems { get; set; }
}

ビューには、タイトルのフォーム入力と、編集できない AnotherClassItems のリストしかありません。これらは、クラスに関連するアイテムのリストを表示するために使用されます。「編集」ビューが読み込まれるとすべてのプロパティが設定されますが、ビューが投稿を行うと、ParentClassId & AnotherClassItems リストは null になります。コントローラーからの HttpPost ActionResult は次のとおりです。

[HttpPost]
public ActionResult Edit(FormCollection collection, MyViewModel myviewmodel)
{

     if (ModelState.IsValid)
     {

       //myviewmodel.ParentClassId and myviewmodel.AnotherClassItems are null??
     }
     return View(myviewmodel);
}

ビューでフォーム入力として使用せずに、ParentClassId & AnotherClassItems プロパティを渡す方法はありますか? または、これには Viewbag を使用する必要がありますか?

4

1 に答える 1

0

フォームは HTML 入力フィールドのみをポストバックすることに注意してください。したがって、テキスト ボックスや非表示のボックスを作成していない場合、編集アクションには投稿されません。

これを処理する正しい方法は、ID を隠しフィールドとして渡し、データベース/リポジトリから元の値を取得することです。

次に、Title と AnotherClassItems の新しい値をモデルに適用し、リポジトリ/データベースに保存します。

于 2015-06-30T18:03:04.803 に答える