【发布时间】:2015-07-24 15:23:43
【问题描述】:
这是我的模型类:
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; }
}
控制器动作方法: 获取:
[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);
}
发布:
[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 是否为空。我也尝试过 UpdateModel 。我的要求是我需要将整个视图模型数据发布到控制器并从那里执行必要的操作。不确定我错过了什么?有人可以建议吗?
【问题讨论】:
-
我认为你不能以这种方式发布 WebGrid,你能显示从这个视图呈现的 html 吗?
-
添加以下信息以了解我的要求。 TestName 文本框——用户可以输入任何测试名称。我将添加自动完成来选择一个测试。我需要控制器中 webgrid 中所有行的 Testnames 以及 SerialNo 和 Sensorname 来执行必要的操作。
-
我只是想看看你的文本框到底有什么名字/id,如果你想绑定到模型,这些很重要。
-
标签: asp.net-mvc asp.net-mvc-4 razor model http-post