Назовите нестатический метод в серверной стороне от клиентского использования JavsScript

Во-первых, Вы попытались загрузиться в живой DVD и выбрать опцию 'Try Ubuntu'? Если это перестало работать, то 12.04 не является соответствующим на Ваших аппаратных средствах. Установки Wubi действительно работают более медленно тот собственные установки. Признаки, которые Вы получаете, предполагают, что 12.04 не совместимо с Вашим видеоконтроллером, но загружающийся в 'Попытку, Ubuntu' протестирует это на Вас. Если Вы хотите возвратиться нам, дайте информацию об аппаратных средствах включая свою спецификацию видеоконтроллера и какую версию Microsoft Windows Вы выполняете.

18
задан abatishchev 17 December 2014 в 18:49
поделиться

5 ответов

Нет, вы не можете вызывать нестатические методы со стороны клиента как таковые. Я пробовал один раз, но он уродливый (также я использовал jQuery ajax). Просто вызовите страницу с помощью ajax с добавлением имени метода в качестве параметра строки запроса, а затем на стороне сервера проверьте параметр и вызовите соответствующий метод. Но, как я уже сказал, это довольно некрасиво: (

$.ajax({'/mypage.aspx?m=mymethod',......}); //this is not correct syntax

на стороне сервера:

protected void Page_Load(object sender, EventArgs e)
{
    if(!Request.QueryString.HasKeys() || 
                string.IsNullOrEmpty(Request.QueryString["m"]))
    {
        //return error or something relevant to your code
    }
    var m = Request.QueryString["m"];

    switch(m)
    {
        case "a":
        a();
        break;
        .....
        .....
    }
}
7
ответ дан 30 November 2019 в 08:43
поделиться

На самом деле вы не можете вызывать нестатические методы таким образом.

Когда вы вызываете PageMethod, вы в основном вызываете специальную веб-службу. Эта функция работает только со статическими методами на той же странице.

1
ответ дан 30 November 2019 в 08:43
поделиться

Дэйв подробно написал о вызове методов страницы со стороны клиента с использованием jquery ajax. Общая идея такова (если вы обнаружите какие-либо проблемы, обратитесь к сайту Дэйва).

Код C #:

[WebMethod]
public static string yourmethod(/*params*/)
{
   return "Hello World!"   
}

ASPX:

$.ajax({
    type: 'POST',
    data: /*Your Data*/,
    dataType: 'JSON',
    contentType: 'application/json',
    url: '/yourpage.aspx/yourmethod',//Method to call
    success: function(result, status) {
        //handle return data
    },
    error: function(xhr, status, error) {
        //handle error
    }
});
-5
ответ дан 30 November 2019 в 08:43
поделиться

в качестве ответа на Pramulia я думаю, вы хотите иметь функцию с аргументом со стороны клиента, которая реализована в примере -> CallServer ( arg1, arg2)

<%@ Page Language="C#" AutoEventWireup="true"  %>
<%@ Implements Interface="System.Web.UI.ICallbackEventHandler" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html >
<head runat="server">
    <title>Client Callbacks</title>
    <script runat="server">
        public void RaiseCallbackEvent(String eventArgument)
        {
            // Processes a callback event on the server using the event
            // argument from the client.
        }

        public string GetCallbackResult()
        {
            // Returns the results of a callback event to the client.
            string dateString = DateTime.Now.ToLongDateString();

            return dateString;
        }

        void Page_Load(object sender, EventArgs e)
        {
            ClientScriptManager cm = Page.ClientScript;
            String cbReference = cm.GetCallbackEventReference(this, "arg",
                "ReceiveServerData", "");
            String callbackScript = "function CallServer(arg, context) {" +
                cbReference + "; }";
            cm.RegisterClientScriptBlock(this.GetType(),
                "CallServer", callbackScript, true);
        }
    </script>
    <script type="text/javascript">
        function ReceiveServerData(arg, context) {
            Message.innerText = "Date from server: " + arg;
        }
    </script>
</head>
<body>
    <h2>Client Callbacks Without Postbacks</h2>
    <form id="form1" runat="server">
       <input type="button" value="Callback" 
           onclick="CallServer('1', alert('Callback sent to Server'))" />
       <br />
       <span id="Message"></span>
   </form>
</body>
</html>
0
ответ дан 30 November 2019 в 08:43
поделиться

. Вы можете избежать статического ограничения, используя простую страницу .asmx вместо страницы с выделенным кодом.

1) Откройте новый веб-сайт, используя шаблон AJAX Enable ASP.NET (он помещает необходимые ссылки в web.config)

2) SIMPLESERVICE.ASMX - Добавить новый веб-сервис .asmx (я назвал свой SimpleService. asmx) Обратите внимание на украшение [System.Web.Script.Services.ScriptSerive] и на то, что класс SimpleService реализует веб-службу.

<%@ WebService Language="C#" Class="SimpleService" %>

using System;
using System.Web.Services;

[System.Web.Script.Services.ScriptService]
public class SimpleService : WebService
{
    [WebMethod]
    public string GetMessage(string name)
    {
        return "Hello <strong>" + name + "</strong>, the time here is: " + DateTime.Now.ToShortTimeString();
    }
} 

3) DEFAULT.ASPX - Чтобы использовать его, обратитесь к службе в вашем диспетчере сценариев, и вы выключены и работаете. В моем Javascript я вызываю метод class.method - SimpleService.GetMessage.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Untitled Page</title>
     <script language="javascript" type="text/javascript">       
        function callServer() {
            SimpleService.GetMessage($get("Name").value, displayMessageCallback);
        }

        function displayMessageCallback(result) {
            $get("message").innerHTML = result;
        } 
    </script>


</head>
<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server" >
            <Services>
                <asp:ServiceReference Path="~/SimpleService.asmx" />
            </Services>
        </asp:ScriptManager>
        <div>
        </div>
        <h1>Hello World Example</h1>

        <div>
            Enter Name: <input id="Name" type="text" />

            <a href="javascript:callServer()">Call Server</a>

            <div id="message"></div>
        </div>  
    </form>
</body>
</html>

Я использовал пример, который нашел у Скотта Гу Здесь найдено.

17
ответ дан 30 November 2019 в 08:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: