2017-04-02 56 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發送,它們將在模型中爲「空」。 –

相關問題