stackoverflow のような警告ボックスを追加したい。私はいくつかの良い例を見ましたが、私が望むものではありませんでした. さまざまな機会に表示されるさまざまなメッセージが必要です。
元。ユーザーのログイン時に C# コードからこのメッセージが必要です。また、ユーザーが注文したとき。または何かが間違っています。
stackoverflow のような警告ボックスを追加したい。私はいくつかの良い例を見ましたが、私が望むものではありませんでした. さまざまな機会に表示されるさまざまなメッセージが必要です。
元。ユーザーのログイン時に C# コードからこのメッセージが必要です。また、ユーザーが注文したとき。または何かが間違っています。
ページの読み込み時に実行したくないが、分離コード (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>
generic-http-handler
orを作成し、それを呼び出してアラートにメッセージを表示する必要が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);
}
});
これを試して
public void message(string msg)
{
ScriptManager.RegisterClientScriptBlock(this, GetType(), "Done", "alert('" + msg + "');", true);
}
この方法を使用するには
書きますmessage("You are logged in sucessfully.");