Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.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
C# 我可以通过ASP.NET将对象从客户端javascript发送到服务器端代码吗?_C#_Javascript_Asp.net_Vb.net - Fatal编程技术网

C# 我可以通过ASP.NET将对象从客户端javascript发送到服务器端代码吗?

C# 我可以通过ASP.NET将对象从客户端javascript发送到服务器端代码吗?,c#,javascript,asp.net,vb.net,C#,Javascript,Asp.net,Vb.net,我可以通过ASP.NET将对象从客户端javascript发送到服务器端代码吗?可以。您可以使用Json和POST。如果您使用的是jQuery,那么可以使用$.ajax将值发布到服务器端。希望这有帮助。是的。一种方法是,使用web方法;例如: 创建服务 来自JavaScript方法的调用,如:DataService.Push(yourObject) 例如: Javascript方法: function btnGenerate_onclick(result) { DataService.P

我可以通过ASP.NET将对象从客户端javascript发送到服务器端代码吗?

可以。您可以使用Json和POST。如果您使用的是jQuery,那么可以使用$.ajax将值发布到服务器端。希望这有帮助。

是的。一种方法是,使用web方法;例如:

  • 创建服务
  • 来自JavaScript方法的调用,如:
    DataService.Push(yourObject)
    例如:

    Javascript方法:

    function btnGenerate_onclick(result) {
        DataService.Push(getDataFromSomeDiv(), onGenerateReportComplete /*callback method*/);
        //or
        //DataService.Push(document.getElementById("myDiv").innerHTML, onGenerateReportComplete /*callback method*/);
    
    }
    
    function onGenerateReportComplete(result) {
                alert("Success:" + result);
    }
    
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.Web.Script.Services.ScriptService]
    public class DataService : System.Web.Services.WebService
    {
    
        [WebMethod(EnableSession = true)] //If you want?
        public bool Push(object someObject)
        {
            //var v = someObject as MyObjectClass;//Process object 
            return true;
        }
    }
    
    服务方式:

    function btnGenerate_onclick(result) {
        DataService.Push(getDataFromSomeDiv(), onGenerateReportComplete /*callback method*/);
        //or
        //DataService.Push(document.getElementById("myDiv").innerHTML, onGenerateReportComplete /*callback method*/);
    
    }
    
    function onGenerateReportComplete(result) {
                alert("Success:" + result);
    }
    
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.Web.Script.Services.ScriptService]
    public class DataService : System.Web.Services.WebService
    {
    
        [WebMethod(EnableSession = true)] //If you want?
        public bool Push(object someObject)
        {
            //var v = someObject as MyObjectClass;//Process object 
            return true;
        }
    }
    
    编辑:javascript如何知道什么是服务器端数据服务?

    这将需要在标记中引用web服务。例如:

    <asp:ScriptManager ID="sm" runat="server">
                <Services>
                <asp:ServiceReference Path="DataService.asmx" />
            </Services>
    </asp:ScriptManager>
    

    并非如此。您可以将对象序列化为字符串,将该字符串发送到ASP.NET,然后在另一端再次将其转换为对象

    JSON是一种很好的序列化格式,您可以将简单对象直接放入各种库中,这些库都是JSON的基础


    对于更复杂的对象,在执行此操作之前,需要提取重新创建它们所需的相关数据位。

    在ASP.NET WebForms中,我将使用ScriptService:

    签出此示例:

    如果要向服务传递/获取孔对象,可以使用
    GenerateScriptType
    属性:


    Ben Dotnet关于在asp.net WebForms中使用脚本服务的看法是正确的。除了使用脚本服务装饰器外,GenerateScriptType装饰器对于确保包含您想要使用的复杂类型也很重要。除此之外,我发现Ben链接的文章也很有用:

    这就是我如何做到你所尝试的。首先,我定义了要在代码隐藏文件中使用的自定义类型

    namespace TestProject
    {
        public class SampleData
            {
                public int id { get; set; }
                public string StartDate { get; set; }
                public string EndDate { get; set; }
    
                public SampleData()
                { }
        }
        public partial class SamplePage : System.Web.UI.Page
        {
            /* The rest of the SamplePage.aspx.cs file goes here */
        }
    }
    
    然后我在SamplePage代码中创建了一个WebMethod/ScriptMethod,如下所示:

    [WebMethod]
    [ScriptMethod]
    [GenerateScriptType(typeof(SampleData))]
    public static bool EditReminder(SampleData data)
    {
        /* Server side code goes here */
        return true;
    }
    
    然后,在客户端页面上,我能够创建SampleData类型的对象,并使用如下PageMethods传递该对象。不要忘记包含名称空间,这是必要的

    另外,不要忘记在页面的某个地方包括脚本管理器并启用如下页面方法:

    <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" />
    
    
    
    你能告诉我更多关于Json的信息吗(解释,举例)?这是一个很好的参考点,你错过了一些东西。javascript如何知道什么是服务器端数据服务?您的示例显示了如何调用web服务并传递单个值,但是它没有显示如何传递对象(包括属性)。