Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在jquery中调用c#扩展方法?_Jquery_Asp.net_Razor_Extension Methods - Fatal编程技术网

如何在jquery中调用c#扩展方法?

如何在jquery中调用c#扩展方法?,jquery,asp.net,razor,extension-methods,Jquery,Asp.net,Razor,Extension Methods,我在Asp.net核心中为类DateTime提供了一个扩展方法ToShamsi $("#tableBody").append("<tr><td>" + user.RegisterDate.ToShamsi()+ "</td></tr>" ); 我需要在JQuery中使用这个扩展方法 $("#tableBody").append("&

我在Asp.net核心中为类
DateTime
提供了一个扩展方法
ToShamsi

$("#tableBody").append("<tr><td>" +
         user.RegisterDate.ToShamsi()+                        
         "</td></tr>" );                
我需要在JQuery中使用这个扩展方法

$("#tableBody").append("<tr><td>" +
         user.RegisterDate.ToShamsi()+                        
         "</td></tr>" );                
我该怎么做? 假设我有一个用户,然后我可以在视图中调用此扩展方法,如下所示:

@user.RegisterDate.ToShamsi();
$("#tableBody").append("<tr><td>" +
         user.RegisterDate.ToShamsi()+                        
         "</td></tr>" );                
我应该如何在JQuery中使用上述代码? 用户,通过Ajax获取:

$("#tableBody").append("<tr><td>" +
         user.RegisterDate+                        
         "</td></tr>" );
$("#tableBody").append("<tr><td>" +
         user.RegisterDate.ToShamsi()+                        
         "</td></tr>" );                
$(“#表体”).append(“'+
user.RegisterDate+
"" );
上面的代码还可以,但我想把秘密日期改成shamsi:

$("#tableBody").append("<tr><td>" +
         user.RegisterDate.ToShamsi()+                        
         "</td></tr>" );                
$(“#表体”).append(“'+
user.RegisterDate.ToShamsi()+
"" );                

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

$("#tableBody").append("<tr><td>" +
         user.RegisterDate.ToShamsi()+                        
         "</td></tr>" );                
  • 用JavaScript重新实现c#代码中的逻辑
  • 在服务器上创建一个端点,您可以从JS代码中调用该端点以返回所需的值
  • 在呈现页面时调用扩展方法,并根据需要使用该值

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

    除非将javascript代码放入razor代码中,否则无法在JQuery中调用它,然后可以将@user.RegisterDate.ToShamsi()作为参数。
    $("#tableBody").append("<tr><td>" +
             user.RegisterDate.ToShamsi()+                        
             "</td></tr>" );                
    
    但是我建议您使用一个隐藏字段,以便在JQuery代码中轻松地读取它。比如:

    $("#tableBody").append("<tr><td>" +
             user.RegisterDate.ToShamsi()+                        
             "</td></tr>" );                
    
    <input type="hidden" id="shamsiDate" value="@user.RegisterDate.ToShamsi()" />
    

    阅读日期。

    您的意思是向asp.net服务器发送请求吗?用户是在浏览器上用js声明的还是在c#中声明的?例如在Razor中?用户通过jquery2a中的Ajax获取。在现有端点响应中包含该值。(从评论到问题)
    $("#tableBody").append("<tr><td>" +
             user.RegisterDate.ToShamsi()+                        
             "</td></tr>" );