ASP.NET MVC webgrid帖子问题 - Viewmodel为NULL

时间:2015-07-24 15:23:44

标签: asp.net-mvc asp.net-mvc-4 razor model http-post

以下是我的模型类:

 public class SensorTest
 {
    public int SerialNo { get; set; }
    public string SensorName { get; set; }
    public string TestName { get; set; }
    public List<string> ImpactSide { get; set; }
 }

 public class SensorTestsViewModel
 {
    public List<SensorTest> SensorTestList { get; set; }

  }

控制器动作方法: GET:

    [HttpGet]
    public ActionResult SensorTests()
    {

        SensorTestsViewModel obj = new SensorTestsViewModel();
        obj.SensorTestList = new List<SensorTest>();

        SensorTest sensortest;
        sensortest = new SensorTest();
        sensortest.SerialNo = 1;
        sensortest.SensorName = "FLAT 13 KMH";
        sensortest.TestName = "";
        obj.SensorTestList.Add(sensortest);

        sensortest = new SensorTest();
        sensortest.SerialNo = 1;
        sensortest.SensorName = "CURB IMPACT 40KMH";
        sensortest.TestName = "";
        obj.SensorTestList.Add(sensortest);

        return View(obj);
    }

POST:

 [HttpPost]
    [ActionName("SensorTests")]
    public ActionResult SensorTests_Post(SensorTestsViewModel sensortests)
    {
        //SensorTestsViewModel model = new SensorTestsViewModel();
        //UpdateModel(model);

        return View(sensortests);
    }

查看代码:

@model  Safety.Models.SensorTestsViewModel
@using (Html.BeginForm("SensorTests", "Safety"))
{
var grid = new WebGrid(Model.SensorTestList, canSort: false, canPage:   false);
int rowNum = 0;
<div>
    @grid.GetHtml(columns:
        grid.Columns
        (
            grid.Column("SerialNo", format: item => rowNum = rowNum + 1),
             grid.Column("SensorName"),
            grid.Column("TestName", format: (item) =>    Html.TextBox("TestName[" + (rowNum - 1).ToString() + "].TestName", (object)item.TestName))

        ), mode: WebGridPagerModes.Numeric)
</div>
<input type="submit" value="Submit" />
}

在POST期间,请参阅Viewmodel为null。我也尝试过UpdateModel。我的要求是我需要将整个viewmodel数据发布到控制器并从那里执行必要的操作。不确定我错过了什么?有人可以建议吗?

1 个答案:

答案 0 :(得分:0)

首先,看一下这个例子:post items of webgrid asp.net mvc3

尝试制作文本框名称,如下所示:&#34; SensorTestList [someIndexHere] .SensorName&#34;