2015-05-22 69 views
0

我試圖將傳遞給查看的模型再次傳遞給控制器​​。是否可以使用隱藏屬性?將數據傳遞給控制器​​的隱藏輸入

@model IEnumerable<MvcApp.ViewModel.PlanObjectsViewModel> 

<div> 
    @using (Html.BeginForm("planviewCreate", "plan",System.Web.Mvc.FormMethod.Post)) 
    { 


     @Html.HiddenFor(Model); 
    } 

    <input " type="submit" name="submit" id="submit" value="Submit" class="btn btn-info pull-right"> 

</div> 

在我的控制器;

public ActionResult planviewCreate(PlanObjectsViewModel model) 
{ 
    // some code here 
    return View(); 
} 

這可能嗎?

+0

你問,不先嚐試? –

回答

1

您將需要使用一個for循環和數組索引,以便它知道如何將數據映射回到你的控制器。

@model MvcApp.ViewModel.PlanObjectsViewModel[] 


@for(var i = 0; i < Model.Count(); i++) 
{ 
    @Html.HiddenFor(m => m[i].PropertyName1); 
    @Html.HiddenFor(m => m[i].PropertyName2); 
} 

控制器簽名

[HttpPost] 
public ActionResult PlanviewCreate(PlanObjectsViewModel[] viewModel) //using model as the variable name will give undesired results. 

如果你有一個大模型,不希望每個屬性地圖,你可以序列化到XML或JSON並傳遞一個字符串到您的視圖成一個隱藏的領域。反序列化返回到您的控制器。國際海事組織,如果你不希望數據被用戶改變,你應該使用緩存。

1

可以遍歷視圖模型的屬性和渲染每一個隱藏的輸入元素:

@foreach(var property in ViewData.ModelMetadata.Properties) 
{ 
     @Html.Hidden(property.PropertyName) 
} 
相關問題