我想把在MVC用户表单中输入的数据显示到另一个视图中。
该类有如下私有变量:
IList<string> _pagecontent = new List<string>();
以下操作接受一个FormCollection对象,对其进行验证,并将其作为List传递到“Preview”视图中:[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对象来获取我的数据,但是不幸的是我不能这样做。在下面这行代码中,我遇到了一个“索引超出范围”的异常,提示索引必须是非负数且小于集合的大小:
<% if (Model[0].ToString() == "0") { %>
而且URL上出现了一些奇怪的参数,因为它解析为http://localhost:1894/Admin/Preview?Capacity=4&Count=3
所以我有两个问题:
- 当我调用RedirectToAction并传递我的List时,为什么在视图的Model对象中无法访问它?
- 如何正确地实现我正在尝试做的事情,即将一组字符串传递给视图以在那里显示?