2013-09-04 5 views
4

Я хочу вызвать метод C# с параметром из JavaScript. Вполне возможно, если удалить параметр s метода <% showDetail(); %>Вызвать метод C# из JavaScript с параметром

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: The name 's' does not exist in the current context

Я попытался

showDetail(Object s){....} 

, а также

showDetail(String s){....} 

, но он не работает.

+2

http://www.geekzilla.co.uk/View7B75C93E-C8C9-4576-972B-2C3138DFC671.htm – Damith

+0

Вы используете приложение C# windows? – Sumeshk

+0

Можете ли вы указать, используете ли вы ASP.NET и являются ли они WebForms или MVC? –

ответ

5

Создать веб-метод. Это простой и опрятный способ вызова методов C# из Javascript. Вы можете вызвать этот метод, используя 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 
     } 
    }); 
} 
+0

Я пробовал, но это не работает, запишите, пожалуйста, полное решение или учебник? – Butters

+0

@SigiAnonym Я отредактировал свой ответ и добавил метод jScript. Пожалуйста, попробуйте это –

+0

Спасибо за вашу помощь – Butters

-1

Его можно взаимодействовать c# application с javascrip т, использовать jint.dll для этого

Jint - Javascript Interpreter for .NET

Для примера

Ниже приведены ява скрипт работает

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 и можно вызвать метод C#

  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); 
} 
+0

Это для запуска JavaScript на сервере. Я не думаю, что это то, чего хочет OP. –

+0

Нет, мы можем сообщить наше приложение C# с помощью функции javascript, используя эту DLL, я использовал это в своем приложении и смог общаться с javascript, называет функцию javascript из методов C# и наоборот – Sumeshk

+0

Даже жесткий вопрос не совсем явным образом, я уверен, что OP должен сделать это через HTTP в приложении ASP.NET. Jint не поможет. –

0

Использования скрытого поля, чтобы передать значение (установить значение с помощью JavaScript.). И вызовите функцию javscript с параметром out. Это значение u может получить из скрытого поля

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"); 
} 
0

решение предоставить по Varun Павла является один я использовал, и она работает, как долго вы исправить следующую ошибку: данные: «{s : sParam}»,

Она должна быть записана в виде: данных: { S: sParam },

данных является использование d передать параметры методу C#. Надеюсь, это поможет. Спасибо,

Смежные вопросы