1

stackoverflow のような警告ボックスを追加したい。私はいくつかの良い例を見ましたが、私が望むものではありませんでした. さまざまな機会に表示されるさまざまなメッセージが必要です。

元。ユーザーのログイン時に C# コードからこのメッセージが必要です。また、ユーザーが注文したとき。または何かが間違っています。

この回答は良いですが、ページの読み込み時にメッセージが表示されます。別のも同じことを示しています。

4

3 に答える 3

1

ページの読み込み時に実行したくないが、分離コード (C#) によって実行したい場合は、AJAX を使用する必要があります。

JQuery を使用すると、次のようなことを行うことで簡単に実現できます (これは、ASP.NET MVC での一般的な「このコントローラーでこのアクションを実行する」ことです)。

 <script type="text/javascript">
 function execute(controller, action) {
        $.ajax({
            type: 'get',
            url: ('/' + controller + '/' + action),
            dataType: 'text'
        }).done(function (data, textStatus, jqXHR) {
            $('#response').html(data).slideDown();
        }).fail(function (jqXHR, textStatus, errorThrown) {
            $('#response').html(jqXHR.responseText).slideDown();
        });
    }
 </script>

これを展開して、必要なデータを必要な URL に渡すことができます。

 <script type="text/javascript">
 function execute(controller, action, username, password) {
        $.ajax({
            type: 'get',
            url: ('/' + controller + '/' + action),
            dataType: 'text',
            data: ('username='+username+'&password='+password)
        }).done(function (data, textStatus, jqXHR) {
            $('#response').html(data).slideDown();
        }).fail(function (jqXHR, textStatus, errorThrown) {
            $('#response').html(jqXHR.responseText).slideDown();
        });
    }
 </script>

サーバー側では、"Success! You've been logged in!" など、応答で伝えたい内容の文字列を返すだけです。そして、「response」という ID を持つ要素は、その内部の HTML がその応答と交換され、スライドして開かれます。

 <div id="response" style="display:none"></div>

.fail() イベントは、スローされた例外で文字列を返さない場合にスローするエラー ページ全体を押し出すことに注意してください。.fail() は、サーバーからの HTTP ステータス コードが 200 (OK) でない場合にトリガーされます。

ASP.NET MVC を使用している場合、C# コードは次のようになります。

 namespace MySite.Controllers
 {
     public class SomeController : Controller
     {
          public string Login(string username, string password){
               // Process login
               return "You've been logged in!";
          }
     }
 }

Webフォームを使用している場合:

 //On Page_Load() call a function if it's an AJAX Login
 // such as 
 if(Request["ajax"] == "login"){
       AjaxLogin(Request["username"], Request["password"]);
 }

 private void AjaxLogin(string username, string password){
      // Process login
      Response.Write("Ajax login complete!");
      Response.End(); // Don't send anything else and stop processing request.
 }

次に、変数を関数に渡すだけで呼び出すことができます。

 <a onclick="execute('MyController', 'Login', 'UserName', 'MyPass')">Login!</a>

明らかに、これは、ログイン要求を入力する前に処理するために必要なデータがあることを前提としています。これは、JQuery を使用して特定の関数を拡張して、次のようなフォーム要素のコンテンツを取得できるようにするために、少し自滅的です。

 <input type="text" name="username" id="username" />
 <input type="text" name="password" id="password" />

次に、関数に次を追加します。

 <script type="text/javascript">
 function login(controller, action) {

      var username = document.getElementById('username').value;
      var password = document.getElementById('password').value;

        $.ajax({
            type: 'get',
            url: ('/' + controller + '/' + action),
            dataType: 'text',
            data: ('username='+username+'&password='+password)
        }).done(function (data, textStatus, jqXHR) {
            $('#response').html(data).slideDown();
        }).fail(function (jqXHR, textStatus, errorThrown) {
            $('#response').html(jqXHR.responseText).slideDown();
        });
    }
 </script>
于 2013-03-29T04:29:35.440 に答える
1

generic-http-handlerorを作成し、それを呼び出してアラートにメッセージを表示する必要がweb serviceありpage-methodますjQuery

このようなハンドラーを作成します

  public class VideoViewValidation : IHttpHandler
  {
      public void ProcessRequest(HttpContext context)
      {
           string videoID = string.Empty;
           string id = context.Request["Id"];
           context.Response.Writ("your message");
      }
}

ボタンクライアントのクリックでjQueryを介して呼び出します

$.ajax({
        url: 'VideoViewValidation.ashx',
         type: 'POST',
          data: { 'Id': '10000', 'Type': 'Employee' },
          contentType: 'application/json;charset=utf-8',
          success: function (data) {
                    alert('Server Method is called successfully.' + data.d);
                },
          error: function (errorText) {
                alert('Server Method is not called due to ' + errorText);
          }
       });
于 2013-03-29T04:34:34.757 に答える
0

これを試して

public void message(string msg)
{
    ScriptManager.RegisterClientScriptBlock(this, GetType(), "Done", "alert('" + msg + "');", true);
}

この方法を使用するには

書きますmessage("You are logged in sucessfully.");

于 2013-03-28T06:55:07.740 に答える