Я хотел бы взять данные, введенные в пользовательскую форму 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);
}
В окне предварительного просмотра имеется следующая директива страницы для передачи строго типизированного списка объектов:
<%@ 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 и передаю его моему списку, почему он недоступен в объекте модели представления?
- Как правильно выполнить то, что я пытаюсь сделать, а именно передать коллекцию строк в представление для отображения там?