asp.net mvc 3 c#post变量数组
我需要将数组传递给POST方法。 但我显然缺少某些东西我的观点看起来像这样:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>
我的方法声明如下所示:
[HttpPost] public ActionResult LetsTest(IEnumerable rez)
当我试图提取数据时,我得到的值不能为空。 我错过了什么?
这里有一些问题:
- 您的视图是为
Rezultat
键入的,但您尝试将该模型视为IEnumerable
。 - 你试图将每个文本框绑定到
x[i]
– 这相当于Model.x[i]
– 当你真正想要的是将它绑定到[i].x
(即Model[i].x
)时。
所以,要纠正这个问题,你需要改变一些事情。
首先,将视图更改为inheritanceSystem.Web.Mvc.ViewPage
。 现在,您的视图可以传递IEnumerable
,这是您的控制器操作所期望的。
第二,改变这个:
对此:
这样做的原因是第一个会尝试将值绑定到Model.x[0]
,这是(或者,一旦你正确键入你的视图),相当于一个实例的属性x
中的第一个元素。 IEnumerable
。 这显然不太正确,因为IEnumerable
没有公开属性x
。 你想要的是绑定Model[0].x
,它是索引0
处Rezultat
对象的属性x
。
更好的是,使用帮助器为您生成名称:
for(int i=0; i < Model.Count; i++) { @Html.TextBoxFor(m => m[i].x) }
如果你真的想要这样做,你必须使用我认为Form Collection
[HttpPost] public ActionResult LetsTest(FormCollection collection, IEnumerable rez) { string[] inputs = new string[6]; for(int i=1; i<8; i++) { //get all your array inputs inputs[i-1]=collection["x["+i+"]"] } }
在这里查看模型绑定到列表。 发布的项目需要采用特定格式才能在POST操作中将其作为列表进行检索。
更改您的视图代码如下:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>
更新 :第二个想法,我认为这是你的实际问题,你是从1-7开始,而不是0-6。
谢谢Ant。
- 从MasterPage方法调用内容页面方法
- 关闭Word文档时出错:“消息filter指示应用程序正忙。”
- 获取表的列名并将其存储在字符串或var c#asp.net中
- 无法绑定到DataSource上的属性或列名称。 参数名称:dataMember
- 如何在OnSelectedIndexChanged触发事件之前获取DropDownList上的上一项
- 如何获取List 的单个值
- 为什么我得到GridViewUpdateEventArgs#NewValues和GridViewUpdateEventArgs#OldValues为空?
- 此操作将创建结构不正确的文档
- 我可以告诉bindingRedirect始终使用最新的可用版本吗?