0

別のモデルをラップするモデル ラッパー クラスがあります。

public class LogicPage {
    public MyPage Pg { get; set; }
}

public class MyPage {
     public string name { get; set; }
}

フォーム作成ビューでは、強く型付けされたフォーム ヘルパーを使用します。

@model MyAppCore.Components.LogicPage
@using (Html.BeginForm("Create","PageAdmin",FormMethod.Post)) {
     <div class="editor-field">
     @Html.EditorFor(model => model.Pg.name)
     @Html.ValidationMessageFor(model => model.Pg.name)
 </div>
 ...
}

私のコントローラーでは、アクションを次のように定義します。

[HttpPost]
public ActionResult Create(LogicPage logicpg)
{
   return View("View",logicpg.Pg);
}

ただし、モデル (MyPage) の詳細をリストする「ビュー」に MyPage ページが表示される場合、ユーザーが入力したデータは表示されず、表示されるページの詳細はすべて MyPage のデフォルト値 (LogicPage のデフォルトのパラメーター コンストラクターなしで初期化) です。 )。フォーム内のデータがアクション内のモデルに渡されていないようです。データが渡されない理由を教えてください。

さらに明確にするために、モデル LogicPage の「作成」フォーム ビューと、モデル MyPage の「表示」詳細ビューの 2 つのビューがあります。

作成.cshtml

@model MyAppCore.Components.LogicPage

View.cshtml

@model MyAppCore.Components.MyPage

ありがとう

4

1 に答える 1

0

やってるって言う

[HttpPost]
public ActionResult Create(LogicPage logicpg)
{
   return View("View",logicpg.Pg);
}

しかし、MyPage が LogicPage から継承されておらず、ビューが LogicPage のインスタンスを期待していることを考えると、次のようにする必要があると思います。

[HttpPost]
public ActionResult Create(LogicPage logicpg)
{
   return View("View",logicpg);
}
于 2012-05-25T04:20:30.987 に答える