Jus*_*tis 5 c# asp.net asp.net-mvc-3
我需要将数组传递给POST方法.但我显然缺少某些东西我的观点看起来像这样:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<Klausimynas.Models.Rezultat>" %>
<input type="text" name="x[1]">
<input type="text" name="x[2]">
<input type="text" name="x[3]">
<input type="text" name="x[4]">
<input type="text" name="x[5]">
<input type="text" name="x[6]">
<input type="text" name="x[7]">
Run Code Online (Sandbox Code Playgroud)
我的方法声明如下所示:
[HttpPost]
public ActionResult LetsTest(IEnumerable<Rezultat> rez)
Run Code Online (Sandbox Code Playgroud)
当我试图提取数据时,我得到的值不能为空.我错过了什么?
这里有一些问题:
Rezultat但您尝试将模型视为一个IEnumerable<Rezultat>.x[i]- 这相当于Model.x[i]- 当您真正想要的是将其绑定到[i].x(即Model[i].x)时.所以,要纠正这个问题,你需要改变一些事情.
首先,将视图更改为继承System.Web.Mvc.ViewPage<IEnumerable<Klausimynas.Models.Rezultat>>.现在您的视图可以传递IEnumerable<Rezultat>,这是您的控制器操作所期望的.
第二,改变这个:
<input type="text" name="x[0]">
Run Code Online (Sandbox Code Playgroud)
对此:
<input type="text" name="[0].x">
Run Code Online (Sandbox Code Playgroud)
这样做的原因是第一个将尝试将值绑定到Model.x[0],或者(或者,一旦你正确地键入了你的视图),相当于x一个实例的属性中的第一个元素IEnumerable<Rezultat>.这显然不太正确,因为IEnumerable没有财产暴露x.你想要什么是绑定Model[0].x,即该属性x的的Rezultat索引对象0.
更好的是,使用帮助器为您生成名称:
for(int i=0; i < Model.Count; i++)
{
@Html.TextBoxFor(m => m[i].x)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7681 次 |
| 最近记录: |