【问题标题】:how to call c# extension method in jquery?如何在 jquery 中调用 c# 扩展方法?
【发布时间】:2019-05-23 23:43:20
【问题描述】:

我在 Asp.net Core 中有一个类 DateTime 的扩展方法 ToShamsi

我需要在 JQuery 中使用这个扩展方法。

我应该怎么做? 假设我有一个用户,然后我可以像这样在视图中调用这个扩展方法:

@user.RegisterDate.ToShamsi();

我应该如何像这样在 JQuery 中使用上面的代码? 用户,通过 Ajax 获取:

$("#tableBody").append("<tr><td>" +
         user.RegisterDate+                        
         "</td></tr>" );

上面的代码没问题,但我想隐藏日期到 shamsi:

$("#tableBody").append("<tr><td>" +
         user.RegisterDate.ToShamsi()+                        
         "</td></tr>" );                

【问题讨论】:

  • 你的意思是向asp.net服务器发送请求吗?
  • 用户是在浏览器的 js 中还是在 c# 中声明的,例如在剃刀?
  • 用户在 jquery 中通过 Ajax 获取

标签: jquery asp.net razor extension-methods


【解决方案1】:

由于您的扩展方法在 c# 中并在服务器上运行并且 jquery 是客户端,因此您有 3 个选项。

  1. 在 JavaScript 中重新实现 c# 代码中的逻辑
  2. 在您的服务器上创建一个端点,您可以从您的 JS 代码调用该端点以返回您需要的值。
  3. 在呈现页面时调用扩展方法并根据需要使用该值

根据您的应用程序的架构,一个选项可能比另一个更有意义。

【讨论】:

  • 2a。在现有端点响应中包含该值。 (从评论到问题。)
【解决方案2】:

你不能在 JQuery 中调用它,除非你把你的 JavaScript 代码放在你的 Razor 代码中,然后你可以把 @user.RegisterDate.ToShamsi() 作为参数。 但我建议您使用隐藏字段,以便您可以在 JQuery 代码中轻松阅读它。比如:

<input type="hidden" id="shamsiDate" value="@user.RegisterDate.ToShamsi()" />

然后在你的 jquery 中你可以说:

$("#shamsiDate").val()

读取日期。

【讨论】:

    猜你喜欢
    • 2010-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-23
    • 1970-01-01
    相关资源
    最近更新 更多