C# Javascript上下文菜单到C

C# Javascript上下文菜单到C,c#,javascript,jquery,asp.net,contextmenu,C#,Javascript,Jquery,Asp.net,Contextmenu,我已经使用Jquery创建了一个javascript上下文菜单,它工作得非常好。但有两种选择。第一个是如果可能的话,用C语言创建这个上下文菜单。第二种方法是在单击菜单中的按钮时运行C函数。哪种选择是最好的,如何开始?问候 Javascript: 您可以用C语言创建一个服务器控件并从中发出菜单,但是因为您已经有了一个工作菜单,所以调用服务器端方法来响应一次单击就更容易了。如果您使用的是jQuery,它非常简单: $.ajax({ url: "/Path/To/MyMethod",

我已经使用Jquery创建了一个javascript上下文菜单,它工作得非常好。但有两种选择。第一个是如果可能的话,用C语言创建这个上下文菜单。第二种方法是在单击菜单中的按钮时运行C函数。哪种选择是最好的,如何开始?问候

Javascript:


您可以用C语言创建一个服务器控件并从中发出菜单,但是因为您已经有了一个工作菜单,所以调用服务器端方法来响应一次单击就更容易了。如果您使用的是jQuery,它非常简单:

$.ajax({
    url: "/Path/To/MyMethod",
    type: "POST",
    dataType: "JSON",
    data: <some POST data>,
    contentType: "application/json; charset=utf-8",
    success: function (result) {
        // Do your stuff here
    },
    error: function (jqXHR, textStatus, errorThrown) {
        // Report error
    }
});

服务器端部分的实现可以是ASPX页面中的静态[WebMethod],或者如果您使用MVC,则可以是对控制器方法的直接调用。

我假设您试图做的是在选择上下文菜单上的项目时调用c方法。如果您使用的是MVC模型,那么这很容易做到。使用如下调用以JSON格式传递参数。我只是使用代码中的一个骨架方法作为示例,当您单击上下文菜单链接时,您可以调用LibraryRead方法

 Client Side

 function LibraryRead() {   
    $.ajax({
        url : 'Library/ReadLibrary',
        type : "POST",
        data : JSON.stringify(idLibrary),
        dataType : "json",
        contentType : "application/json; charset=utf-8",
        success : function(result) {
            $(result).each(function() {
                ....Process Results
            });
        },
        error : function() {
            .....If something goes wrong, if you use a try catch in your code 
            which does not handle the exception correctly and something goes wrong 
            this will not be triggered. Use propper exception handling.
        }
    });
}



Server Side 

// Post: /Library/ReadLibrary
[HttpPost]
public JsonResult ReadLibrary(int idLibrary)
{
    try
    {

        var library = READ your library here from your data source

        return this.Json(library);
        }
        else
        {
            return null;
        }
    }
    catch (Exception ex)
    {
        //Exception handling omitted for simplicity
    }
}
在google上用JSON搜索MVC3和JQuery/Javascript调用,有大量可用资源


如果您不使用MVC模式,那么您可以在代码隐藏中使用web服务或方法。尽管像[Ajax.AjaxMethod]或[WebMethod]

Im不使用MVC,但您需要在方法上添加适当的属性。如果我让你用我的代码实现你的代码,我是不是很粗鲁;我不使用MVC。如果我让你用我的代码实现你的代码,我是不是很粗鲁;
 Client Side

 function LibraryRead() {   
    $.ajax({
        url : 'Library/ReadLibrary',
        type : "POST",
        data : JSON.stringify(idLibrary),
        dataType : "json",
        contentType : "application/json; charset=utf-8",
        success : function(result) {
            $(result).each(function() {
                ....Process Results
            });
        },
        error : function() {
            .....If something goes wrong, if you use a try catch in your code 
            which does not handle the exception correctly and something goes wrong 
            this will not be triggered. Use propper exception handling.
        }
    });
}



Server Side 

// Post: /Library/ReadLibrary
[HttpPost]
public JsonResult ReadLibrary(int idLibrary)
{
    try
    {

        var library = READ your library here from your data source

        return this.Json(library);
        }
        else
        {
            return null;
        }
    }
    catch (Exception ex)
    {
        //Exception handling omitted for simplicity
    }
}