2015-05-22 2 views
0

Я пытаюсь передать модель, которая перешла к просмотру, снова к контроллеру. Возможно ли использование атрибута Hidden?Скрытый ввод для передачи данных контроллеру

@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

Вам нужно будет использовать цикл и индексатор массив, так что знает, как отобразить данные обратно к вашему контроллеру.

@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) 
} 
Смежные вопросы