2017-04-02 5 views
1

モデルのすべてのプロパティを含むPOSTフォームを作成したいとします。各プロパティには、隠された入力項目として設定されます:モデルのすべてのプロパティを含むPOSTフォーム

@using (Html.BeginForm("MyAction", "MyController")) 
{   
    @Html.HiddenFor(m => m.Field1) 
    @Html.HiddenFor(m => m.Field2) 
    ... 
    @Html.HiddenFor(m => m.FieldN)   

    <button type="submit" class="btn btn-primary">Launch query</button> 
} 

理想的には、私は(擬似コード)のような何かをしたいと思います:

@using (Html.BeginForm("MyAction", "MyController")) 
{   
    foreach(var prop in m.Props) 
    { 
     @Html.HiddenFor(m => m[prop]) 
    } 

    <button type="submit" class="btn btn-primary">Launch query</button> 
} 

答えて

2

は多分のようなもの:

@foreach (var property in Model.GetType().GetProperties()) 
{ 
    <input id="@property.Name" name="@property.Name" value="@property.GetValue(Model, null)" type="hidden" /> 
} 
+0

は、それは次のように動作します魅力、ありがとうございました。私はそれをASPの 'Html'に適合させようと思ってしまいました。私のコードの実装では、 'var propValue = property.GetValue(Model、null);を追加しました。 if(propValue!= null){//書きます} '。このようにして、私は空のプロパティをスキップします。これは必要ではありません。POSTがとにかく送信されると、モデルで 'null'になります。 –

関連する問題