5

我想用 JavaScript 的参数调用 C# 方法。有可能,如果我删除s方法的参数<% showDetail(); %>

function showDetail(kurz)
        {
            String s = kurz.toString();
            <% showDetail(s); %>;
        }

C# 测试方法:

public void showDetail(String s)
        {
            Label_Test.Text = s.ToString();
        }
public void showDetail()
        {
            Label_Test.Text = "";
        }

没有参数它工作正常,但使用s变量我得到一个编译器错误:

CS0103:当前上下文中不存在名称“s”

我努力了

showDetail(Object s){....}

并且

showDetail(String s){....}

但它不起作用。

4

5 回答 5

6

创建一个网络方法。这是从 Javascript 调用 c# 方法的一种简单而简洁的方法。您可以使用 jQuery Ajax 调用该方法。有关 webMethod,请参见以下示例。

[WebMethod]
public static string RegisterUser(string s)
{
    //do your stuff
    return stringResult;
}

然后使用 jQuery ajax 调用此方法。您也可以传递参数。如下所示

function showDetail(kurz) { 
String sParam = kurz.toString(); 
    $.ajax({ 
    type: "POST", 
    url: "PageName.aspx/MethodName", 
    data: "{s:sParam}", // passing the parameter 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function(retValue) {
        // Do something with the return value from.Net method
        } 
    }); 
} 
于 2013-09-04T12:27:00.513 回答
0

您可以通过使用 WebMethods 来实现这一点

首先创建一个webmethod。

    [WebMethod]
public string MethodName(string Parameter)
{
string msg=string.Empty;
//Your Code
return msg;
}

在 Java Script 调用中,它的功能为

WebService.MethodName(Parameter,onSuccess,Error) // Here Webservice is the name of your asmx file

function onSuccess(result)
{
//Your code
}

function Error()
{
alert("Error");
}
于 2013-09-04T12:55:34.380 回答
0

使用隐藏字段传递值(使用 javascript 设置值。)。并使用 out 参数调用 javscript 函数。你可以从隐藏字段中获取该值

于 2013-09-04T09:41:06.337 回答
0

Varun Paul 提供的解决方案是我使用的解决方案,只要您更正以下错误,它就可以工作:数据:“{s:sParam}”,

它应该写成: data: { s:sParam },

data 用于将参数传递给 C# 方法。希望能帮助到你。谢谢,

于 2017-05-19T15:54:44.963 回答
-1

它可以c# applicationjavascript 交互,jint.dll用于那个

Jint - .NET 的 Javascript 解释器

例如

以下是java脚本函数

function reverse(my_str)  
{ 
    var sb = new jintTestApplication.Test();//jintTestApplication is the namespace name
    return sb.Test1(reverse2(my_str) );
} 

function reverse2(my_str)  
{    
 var comStr="";  
    var result="";  
    var i=my_str.length;  

    i=i-1;  
     for (var x = i; x >=0; x--)  
      {  
        result= my_str.charAt(x);  
        comStr+=result;  
       }  
   return comStr; 
} 

所以在这种情况下,你必须在 javascript 中创建你的类的对象,并且可以调用 ac# 方法

            JintEngine engine = new JintEngine();
            engine.Run(ReadJavaScript());
            Console.WriteLine(engine.Run("reverse('Foooooo');"));

   public static  string ReadJavaScript()
   {
    string allines = File.ReadAllText(@"[path]\test.js");
   }



public void Test1(string message)
{
MessageBox.show(message);
}
于 2013-09-04T09:31:46.337 回答