【问题标题】:Can I add server side event handler to a link in Razorpages我可以将服务器端事件处理程序添加到 Razor 页面中的链接吗
【发布时间】:2018-05-23 12:46:21
【问题描述】:

我在 Razorpages 中有一堆链接,这些链接用于使用 EF 更改 SQL 中条目的状态。

<a>Set status 1</a>
<a>Set status 2</a>
<a>Set status 3</a>

我不想为模型中的每个状态创建一个操作,也不想添加任何路由。单击状态链接时,它应该运行我的 C# 代码并返回到同一页面。

是否可以在不添加页面处理程序的情况下触发 razorpages 中的内联操作? (即向执行内联代码的链接添加服务器端事件处理程序)

【问题讨论】:

  • 路由有什么问题?您如何期望仅对 3 种不同状态使用一个操作而无法区分单击了哪个链接?
  • 通常,链接用于 HTTPGET 请求......而不是 HTTPPOST。如果您想更改条目的状态并仍然停留在同一页面上,我强烈建议您使用 Ajax。

标签: asp.net-mvc action inline razor-pages


【解决方案1】:

首先:不,现在有办法做到这一点。但也有变通办法。

如果您不想要多个操作,我建议使用参数创建一个操作。

如果您真的希望客户端代码更改您的数据库,您必须使用 JavaScript 路由并通过 JavaScript 访问您的数据库。

你有:

<a>Set status 1</a>

我建议:

<a href="serverUrl/home/SetStatus?param=1">Set status 1</a>

在你家的控制器中,(显然你可以更换控制器)

    public ActionResult SetStatus(int param)
    {
        //do what ever.

        return RedirectToAction("OriginalAction");
    }

如果您不希望它重定向到操作,那么您可以使用 ajax 或其他方式来发布它。我这样做是为了在不改变视图的情况下发回客户的原始纬度和经度。如果你使用

<a />

您将要更改 URL,并且必须重定向回原始页面。

【讨论】:

  • 请提供使用 razorpages 参数的操作代码
  • 你为什么说“客户端”
  • "通过 JavaScript 访问您的数据库"...如果数据库在服务器上,这通常是不可能的,即使它可能的,它也是非常不安全的。您真的是指 JavaScript 将 AJAX 转换为服务器端脚本吗?
  • 不,我认为你完全错了。我在问是否有一种方法可以在不使用模型的情况下直接从 razorpages 中的链接执行服务器端代码。使用剃刀我可以在渲染时执行代码。但我想使用链接执行它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-04
  • 1970-01-01
  • 2017-06-07
  • 2023-04-08
相关资源
最近更新 更多