Я хотел бы взять данные, введенные в пользовательскую форму MVC, и отобразить их в другом представлении.
Класс имеет следующую переменную:
IList<string> _pagecontent = new List<string>();
Следующее действие принимает объект FormCollection, проверяет его и передает его в представление "Предварительный просмотр" в виде списка:
[Authorize(Roles = "Admins")]
[ValidateInput(false)]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult UpdateContent(FormCollection collection)
{
if (ModelState.IsValid)
{
string PageToInsert = collection["PageToInsert"];
string PageHeader = collection["PageHeader"];
string PageBody = collection["PageBody"];
//validate, excluded...
_pagecontent.Add(PageToInsert);
_pagecontent.Add(PageHeader);
_pagecontent.Add(PageBody);
}
return RedirectToAction("Preview", _pagecontent);
}
Представление Preview имеет следующую директиву для передачи строго типизированного объекта List:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Template.Master" Inherits="System.Web.Mvc.ViewPage<List<string>>" %>
Я бы ожидал, что смогу использовать объект Model для получения моих данных, но, увы, я не могу. В следующей строке я получаю исключение error index out of bounds
, указав, что индекс должен быть неотрицательным и меньше, чем размер коллекции:
<% if (Model[0].ToString() == "0") { %>
И к URL-адресу добавлены некоторые странные параметры, так как он разрешает
http://localhost:1894/Admin/Preview?Capacity=4&Count=3
У меня есть два вопроса:
- Когда я вызываю RedirectToAction и передаю ему свой список, почему он недоступен в представлении объекта модели?
- Каков правильный способ делать то, что я пытаюсь сделать, а именно передать коллекцию строк в виде для отображения там?