将数据传递给控制器的隐藏输入
Hidden input for passing data to controller
我正在尝试将已传递给视图的模型再次传递给可能使用隐藏属性的 controller.Is?
@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();
}
这可能吗??
您可以遍历视图模型的属性并为每个属性呈现一个隐藏的输入元素:
@foreach(var property in ViewData.ModelMetadata.Properties)
{
@Html.Hidden(property.PropertyName)
}
您将需要使用 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 并将其作为单个字符串传递给您的视图进入一个隐藏的领域。反序列化 return 到你的控制器。 IMO,如果您不希望用户更改数据,则应该使用缓存。
我正在尝试将已传递给视图的模型再次传递给可能使用隐藏属性的 controller.Is?
@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();
}
这可能吗??
您可以遍历视图模型的属性并为每个属性呈现一个隐藏的输入元素:
@foreach(var property in ViewData.ModelMetadata.Properties)
{
@Html.Hidden(property.PropertyName)
}
您将需要使用 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 并将其作为单个字符串传递给您的视图进入一个隐藏的领域。反序列化 return 到你的控制器。 IMO,如果您不希望用户更改数据,则应该使用缓存。