请参阅控制器页面中的隐藏类型ID

时间:2015-05-13 11:30:44

标签: asp.net-mvc-4 hidden

我需要在控制器页面中使用hdNoOfColumnshdNoOfRows,这些页面在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;

1 个答案:

答案 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);
   }

}