我需要在控制器页面中使用hdNoOfColumns
和hdNoOfRows
,这些页面在View页面中定义为隐藏类型。我得到一个“上下文不存在”的错误。如何在控制器页面中引用隐藏的类型ID?
查看:
<input id="hdNoOfRows" type="hidden" name="hdNoOfRows" />
<input id="hdNoOfColumns" type="hidden" name="hdNoOfColumns"/>
控制器:
hdNoOfColumns.Value = count.ToString();
dsCount = ds.Tables[0].Rows.Count;
hdNoOfRows.Value = dsCount.ToString();
seatCount = dsS.Tables[0].Rows.Count;
答案 0 :(得分:1)
asp.net mvc不能用作asp.net网页表单,你需要创建一个模型然后使用它:
首先创建一个模型:
public class TableModel
{
public string NoOfColumns { get; set;}
public string NoOfRows { get;set; }
}
现在在您的控制器操作中:
public class BarController : Controller
{
public ActionResult Foo()
{
TableModel model = new TableModel();
model.NoOfColumns= count.ToString();
dsCount = ds.Tables[0].Rows.Count;
model.NoOfRows= dsCount.ToString();
seatCount = dsS.Tables[0].Rows.Count;
return View(model);
}
}
现在在您的视图中使用HiddenFor()
:
@model TableModel
@Html.HiddenFor(x=>x.NoOfColumns)
@Html.HiddenFor(x=>x.NoOfRows)
将它们放入表格中发布:
并且要将值回发给控制器,您必须将它们放在一个表单中:
@model TableModel
@using(Html.BeginForm("Foo", "Bar", FormMethod.Post))
{
<input id="hdNoOfRows" type="hidden" name="hdNoOfRows" />
<input id="hdNoOfColumns" type="hidden" name="hdNoOfColumns"/>
<input type="submit" value="Post"/>
}
然后在你的控制器控制器句柄中进行后期操作:
public class BarController : Controller
{
public ActionResult Foo()
{
TableModel model = new TableModel();
model.NoOfColumns= count.ToString();
dsCount = ds.Tables[0].Rows.Count;
model.NoOfRows= dsCount.ToString();
seatCount = dsS.Tables[0].Rows.Count;
return View(model);
}
[HttpPost]
public ActionResult Foo(TableModel model)
{
// do saving in db or whatever business logic
return View(model);
}
}