我有一个ASP。. NET Core MVC应用程序,在.cshtml页面(Razor)中编写了几个函数。当点击a标签时,我特别想运行这个。这段代码必须转到本地存储的.svg文件中,并更改一些样式属性。代码如下,存储在视图中。
public static void turnRed()
{
var pathToSVG = "path/to/svg";
var doc = XDocument.Load(pathToSVG);
var node = doc.Descendants(XName.Get("rect", "http://www.w3.org/2000/svg")).FirstOrDefault(cd => cd.Attribute("id").Value == "rect1");
node.SetAttributeValue("fill", "red");
doc.Save(pathToSVG);
}
现在在实际的html中,我希望有一个简单的onclick表达式,当按下a-标签时将运行代码。
<a onclick="@{ turnRed(); }" href="#">Change SVG color</a>
由于某种原因,我现在拥有的被称为onload,而不是on click。我该怎么做呢?如果有一种不需要JavaScript的方法,那将是理想的,但无论如何都可以。谢谢!
以下是我已经看过并尝试过的一些概念:
使用Razor调用c#函数 https://www.c-sharpcorner.com/blogs/how-to-create-razor-function-in-asp-net-mvc-view1
https://asp.mvc-tutorial.com/razor/local-functions/
https://learn.microsoft.com/en us/aspnet/core/mvc/views/razor?view=aspnetcore - 6.0
Razor页面允许使用handler methods
。要从页面调用方法,您需要将On
+ http动词+方法名称。在我的测试中,这对于静态方法
不起作用。为
更改签名方法public void OnGetTurnRed()
并将"a"改为:
<a asp-page-handler="TurnRed">Change SVG color</a>
文档剃须刀