2011-02-03 9 views
0

誰もがこの問題を抱えていると確信していますが、とにかくこれを尋ねると思いました。だからここに私が持っているものである -asp.net mvcでオブジェクト内のオブジェクトを渡している間の動作ですか?

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)%> これは予想される動作だと思いますが、ここで何か不足していますか?

答えて

1

あなたの「継承」属性が間違っています。代わりに

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

のあなたのモデルとしてModels.ABC使用したい場合には

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

でなければなりません。別の方法として、投稿したアクションメソッドはコンパイル可能ではないので、実際の問題の内容を知ることは難しいです。

このようなコンポジットオブジェクトを送信することは問題なく機能するため、実装に問題が発生する可能性があります。任意の永続化モデルのプロパティのための

更新

値が戻って、彼らがフォームフィールドに格納する必要があることを意味エディタページからPOSTする必要があります。ページジェネレータがこれらの値のフィールドを作成していない場合は(ネストされたオブジェクトの部分的なビューを含めることがより適切なはずです)、編集可能なフィールドを追加する必要がありますまたは隠されています。

関連する問題