如果您使用的是 Razor,则无法直接访问该字段,但可以管理其值。
这个想法是,第一个 Microsoft 方法驱使开发人员远离 Web 开发,并使桌面程序员(例如)更容易制作 Web 应用程序。
同时,Web 开发人员并不了解 ASP.NET 这种诡谲诡异的方式。
实际上,这个隐藏的输入是在客户端呈现的,而 ASP 无法访问它(它从来没有)。但是,随着时间的推移,您会看到它是一种盗版方式,并且当您使用它时,您可能会依赖它。Web 开发不同于桌面或移动。
模型是您的逻辑单元,隐藏字段(和整个视图页面)只是数据的代表视图。因此,您可以将您的工作专门用于应用程序或域逻辑,而视图只是将其提供给消费者 - 这意味着您不需要视图中的详细访问和“头脑风暴”功能。
控制器实际上确实可以管理隐藏或常规设置。模型提供特定的逻辑单元属性和功能,而视图只是将其呈现给最终用户,简单地说。阅读有关MVC的更多信息。
模型
public class MyClassModel
{
public int Id { get; set; }
public string Name { get; set; }
public string MyPropertyForHidden { get; set; }
}
这是控制器动作
public ActionResult MyPageView()
{
MyClassModel model = new MyClassModel(); // Single entity, strongly-typed
// IList model = new List<MyClassModel>(); // or List, strongly-typed
// ViewBag.MyHiddenInputValue = "Something to pass"; // ...or using ViewBag
return View(model);
}
视图如下
//This will make a Model property of the View to be of MyClassModel
@model MyNamespace.Models.MyClassModel // strongly-typed view
// @model IList<MyNamespace.Models.MyClassModel> // list, strongly-typed view
// ... Some Other Code ...
@using(Html.BeginForm()) // Creates <form>
{
// Renders hidden field for your model property (strongly-typed)
// The field rendered to server your model property (Address, Phone, etc.)
Html.HiddenFor(model => Model.MyPropertyForHidden);
// For list you may use foreach on Model
// foreach(var item in Model) or foreach(MyClassModel item in Model)
}
// ... Some Other Code ...
ViewBag 的视图:
// ... Some Other Code ...
@using(Html.BeginForm()) // Creates <form>
{
Html.Hidden(
"HiddenName",
ViewBag.MyHiddenInputValue,
new { @class = "hiddencss", maxlength = 255 /*, etc... */ }
);
}
// ... Some Other Code ...
我们正在使用 Html Helper 来呈现隐藏字段,或者我们也可以手动编写它<input name=".." id=".." value="ViewBag.MyHiddenInputValue">
。
ViewBag 是视图的某种数据载体。它不限制您使用模型 - 您可以放置任何您喜欢的东西。