动态读取输入 Razor MVC C#

Posted

技术标签:

【中文标题】动态读取输入 Razor MVC C#【英文标题】:Dynamically read of inputs Razor MVC C# 【发布时间】:2021-11-22 01:54:34 【问题描述】:

我在从动态创建的组合框中聚合输入时遇到问题。 在我看来 .cshtml 我正在创建具有多种选择的多个元素 我正在尝试将 onClick 触发器设置为这个元素,就像在 sn-p 中一样:

 @foreach (var value in values)
  
     <option onclick="@UpdateSelectedFilters(item.DisplayName, value)" value="@value" >@value</option>
  

但不幸的是,这个函数“@UpdateSelectedFilters()”是在渲染元素时执行的,而不是像我想要的那样在点击事件上执行。

【问题讨论】:

【参考方案1】:

如果您的项目不是 Blazor,您不能在 onClick 事件中使用 @。

您可以创建一个 javascript 函数,例如:

function UpdateSelectedFilters(displayname, value)
    ...some code 

您可以查看下面的答案

here

【讨论】:

【参考方案2】:

UpdateSelectedFilters是一个js函数,所以你不需要在它之前使用@。尝试使用

<option onclick="UpdateSelectedFilters(@item.DisplayName, @value)" value="@value" >@value</option>

这样您就可以将 C# 数据传递给 js 函数。

【讨论】:

【参考方案3】:

更改为 javascript 还不够,模型也应该绑定在例如 asp-items 中

<select id="@name" class="form-control col-lg-3" style="margin-right: 10px; margin-top:10px" name="@name" asp-items="@options" onchange="UpdateSelectedFilters(this.name,this.value)">

【讨论】:

以上是关于动态读取输入 Razor MVC C#的主要内容,如果未能解决你的问题,请参考以下文章

使用 MVC 渲染具有嵌入式 Razor 变量的动态 HTML

MVC 4 Razor - 动态命名javascript函数

基于配置的 C# MVC 动态路由

C#:如何在 Blazor Wasm 托管中将动态 Razor 组件从服务器发送到客户端?

C#通过Razor语法动态赋值渲染HTML前端界

MVC Razor 隐藏输入和传递值