在onclick上运行c#函数来修改SVG文件



我有一个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>

文档剃须刀

最新更新