【问题标题】:How to access a html fields value inside razor function in MVC C#?如何在 MVC C# 中访问 razor 函数中的 html 字段值?
【发布时间】:2016-04-22 13:38:39
【问题描述】:

如何在 Razor 语法中访问函数内的 html 控件的值? 假设我有一个隐藏字段:

@Html.Hidden("ActiveTab","Task")

我需要从 razor 视图中的函数访问该字段的值。 希望使用解释的示例。 提前致谢。

【问题讨论】:

  • 您是尝试通过服务器端代码还是客户端(如 Javascript)访问它?
  • 嗨,Rion,我需要从服务器端获取它。我的意思是 .cshtml 文件中剃须刀代码中的一个函数。 like : @functions { // 在此处添加代码。 }
  • 我不知道这是否可能。 Html.Hidden() 助手只是要渲染一个 <input /> 标记,在它被渲染之后,你真的无法访问它(在客户端代码之外),直到它包含 <form> 被发布到服务器.
  • 一旦你发布了数据,隐藏的字段也被发布了,将这个值存储在一个 ViewBag 中并在服务器端检索它。注意 - 您不能直接访问隐藏字段数据,因为服务器代码将首先执行,然后是客户端代码。

标签: razor model-view-controller


【解决方案1】:

如您所料,这将在您的视图中呈现隐藏的<input /> 标签。

渲染后,如果您需要访问它,您可能希望通过 Javascript 使用与您的第一个参数匹配的 id 属性(在本例中为“ActiveTab”):

<script>
    // Get the value of your hidden field using Javascript
    var active = document.getElementById('ActiveTab').value; // yields "Task"
</script>

如果不实际发布包含它的&lt;form&gt;,Razor 本身并不能真正以服务器端方式访问它。所有Html.Hidden() 助手要做的就是为它呈现适当的客户端标记(一旦发布就由服务器来处理它)。

【讨论】:

  • 嗨,我需要在 标签内包含语法吗?
  • 是的,我已经更新并添加了它。您还需要确保将 &lt;script&gt; 标记放置在 View 的底部,以确保访问该元素时没有任何问题。
  • 好的,我可以在 Razor 代码的后面部分重用该变量( var active )吗?我的意思是像这样@if (active == "Notification")
  • 用这种方法声明它实际上会生成一个 Javascript 变量,它只能通过您的客户端代码(Javascript 而不是 C#/Razor 代码)访问。如果你想处理这个问题,你可以考虑用ActiveTab 属性填充一个模型并将它传递到你的视图中。然后您可以按预期通过Model.ActiveTab == "Notification" 进行检查。
  • 感谢您的及时支持。我可以这样写吗? >
猜你喜欢
  • 1970-01-01
  • 2018-01-09
  • 1970-01-01
  • 1970-01-01
  • 2021-01-03
  • 2013-12-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-15
相关资源
最近更新 更多