0

誰もがこれに出くわしたと思いますが、とにかくこれを聞いてみようと思いました。だからここに私が持っているものがあります-

public class ABC
{
  public int x;
  public int y;
  public XYZ obj;
}
public class XYZ
{
 int x1;
 int y1;
}
public ActionResult Test1()
{
  ABC model= new ABC();
  model.x=1;
  model.y=2;
  ABC.obj= new XYZ();
  model.x1=12;
  obj.y2=34;
  return View(model);
}
[HttpPost]
public ActionResult Test1(ABC model)
{
 //does not get XYZ obj
}
View- 
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<Models.ABC>" %>
   <% using (Html.BeginForm())
   {%>
    //stuff here
        <%:Html.HiddenFor(model => model.obj)%>
   <%}%>

XYZのフィールドx1とy1に対して明示的に非表示のフィールドを実行すると、それらの値が返されます。このように- <%:Html.Hidden("Model.obj.x1",Model.obj.x1)%> これは予想される動作だと思いますが、ここで何かが欠けていますか?

4

1 に答える 1

1

まず、「継承」属性が間違っています。それ以外の

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" 
Inherits="Models.ABC" %>

そのはず

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" 
Inherits="System.Web.Mvc.ViewPage<Models.ABC>" %>

Models.ABCあなたのモデルとして使用したい場合。別の理由として、投稿したアクション メソッドはコンパイル可能でさえないため、実際の問題が何であるかを判断するのは困難です。

このような複合オブジェクトの送信は私にとっては問題なく機能するため、実装に問題がある可能性が高くなります。

アップデート

永続化されたモデル プロパティの値は、エディター ページから POST する必要があります。つまり、フォーム フィールドに格納する必要があります。ページ ジェネレーターがこれらの値のフィールドを作成しない場合 (作成する必要があるかどうかはわかりません。ネストされたオブジェクトの部分ビューを含める方が理にかなっています)、編集可能なフィールドを追加する必要があります。または非表示。

于 2011-02-03T17:56:54.263 に答える