如何在ASP MVC应用程序的视图中调用Javascript函数?
在C#foreach循环中给anchor标签赋href值。这个值将从Javascript函数中获取。我们如何在C#的MVC模型中实现这个功能?
它应该从javascript函数中获取值,而不会发生任何事件。
- . CSHTML文件*
@foreach (var item in Model.items)
{
<a href="JavascriptFunction(item.tostring())" class="solutions-grid__card">
Title
</a>
}
- Javascript函数**
function JavascriptFunction(str) {
alert(str);
return str.replace(/(?:^\w|[A-Z]|\b\w)/g, (word, index) => {
return index === 0 ? word.toLowerCase() : word.toUpperCase();
}).replace(/\s+/g, '');
}
href标记值应具有Javascript返回值。
3条答案
按热度按时间5q4ezhmt1#
不要使用
href
,而只需使用onclick
oknrviil2#
要在ASP.NETMVC应用程序的视图中调用JavaScript函数,可以使用以下方法:
在视图中的script标记中定义JavaScript函数:
在View的foreach循环中,使用Url.Action()方法为将处理请求的action方法生成URL:
这里,ActionMethodName和ControllerName应该分别替换为操作方法和控制器的名称。
在Controller操作方法中,检索str参数的值并将其传递给JavaScript函数:
在这里,ViewBag.javascriptResult用于存储JavaScript函数的结果,该结果将呈现在View中。
在视图中,使用Html.Raw()方法呈现JavaScript结果:
这将执行JavaScript函数并将结果存储在result变量中,您可以使用此变量动态设置href标签的值。
我希望这对你有帮助:)
eeq64g8w3#
你已经陈述了你的主要标准:
将href值赋给C# foreach循环中的锚标记。
在循环内部,Razor引擎正在C#上下文中执行。该引擎无法切换到解析/执行JavaScript函数。服务器上的Razor引擎不执行JavaScript。
因此,您的代码需要在
foreach
循环中执行一个C#函数,以提供与JavaScript函数相同的输出。您的JS函数JavascriptFunction
将一个单词字符串转换为驼峰式字符串。C#等价物在下面的Razor页面(.cshtml)中。参考链接添加在注解中。请参见Microsoft文档中的此链接和SO link帖子,了解如何从
foreach
循环中调用C#函数。将C#函数放在静态类中比直接放在Razor页面中更好。