我有几个视图有这样的隐藏字段:
<input type="hidden" runat="server" id="hiddenTab" value="1"/>
每个视图可能有不同的值。
我有一个基本控制器,我希望能够在构造函数上访问此值:
Public Class BaseController: Controller
{
public BaseController()
{
string tabid = Request.Form["hiddenTab"];
}
}
最后我有几个控制器来实现这个基本控制器:
public class HomeController : BaseController
{
public ActionResult Index()
{
string tabid = Request.Form["hiddenTab"];
//if tabid = 1, do this.. if it is 2, do this, etc...
}
}
首次加载控制器时,如何访问视图中的隐藏字段值或任何其他控件的值?该应用程序刚刚开始,所以尚未发布任何内容。我试图从控制器和基本控制器访问该值,并且Request.Form中没有值。
我正在将一个应用程序从aspx转换为MVC,而在aspx应用程序上,主页代码隐藏有这个:
HtmlInputHidden hidddentabid;
hidddentabid = (HtmlInputHidden)Body.FindControl("hiddenTab");
这适用于aspx中的母版页,但不适用于MVC。我花了几个小时看,却找不到任何相关内容。我能找到的就是如何访问POSTED到控制器的隐藏值。首次渲染视图的控制器时没有任何操作。
非常感谢任何帮助!
答案 0 :(得分:4)
您缺少隐藏元素的name
属性。您可以根据名称获取值。试试这个
<input type="hidden" id="hiddenTab" name="hiddenTab" value="1"/>
正如Andrie所说,Asp.Net MVC中不需要runat="server"
答案 1 :(得分:4)
在MVC ASP.NET下使用Model,读取你没有使用MVC范例的代码!使用MVC的最佳方法是在模型中加入适当的方法,在视图中引用模型,并在操作的后期将该模型放入操作的参数中,如
[HttpPost]
public ActionResult Index(Modelpage model){...}
模型
public class Modelpage {
public int hiddenTab {get;set;}
}
视图中的
[...]
@Html.HiddenFor(m=>m.hiddenTab)
[...]
答案 2 :(得分:1)
为您的操作添加参数,它将自动映射:
public ActionResult Index(int hiddenTab)
{
//Do smth...
}
RUNAT =&#34;服务器&#34; - 此属性适用于传统ASPX页面。如果您使用的是ASP.NET MVC View Engine,则不需要这样做。
答案 3 :(得分:0)
具有name属性的html控件只能使用request.form对象访问,对此,隐藏字段或任何控件都应该是表单。
答案 4 :(得分:0)
用于访问控制器操作方法中的任何表单控件,首先检查表单标记中是否包含相同的元素。