想添加一個類似於stackoverflow的提醒框。我看到了一些很好的例子,但不是我想要的東西。我想要在不同場合出現的不同訊息。Alertover box like stackoverflow dynamic data
ex。當用戶登錄時,我想從C#代碼中獲取此信息。 當用戶下訂單時。 或者有什麼不對。
This answer is good,but the message is on the page loading on page load。另一個example展示相同。
想添加一個類似於stackoverflow的提醒框。我看到了一些很好的例子,但不是我想要的東西。我想要在不同場合出現的不同訊息。Alertover box like stackoverflow dynamic data
ex。當用戶登錄時,我想從C#代碼中獲取此信息。 當用戶下訂單時。 或者有什麼不對。
This answer is good,but the message is on the page loading on page load。另一個example展示相同。
試試這個
public void message(string msg)
{
ScriptManager.RegisterClientScriptBlock(this, GetType(), "Done", "alert('" + msg + "');", true);
}
使用此方法
寫message("You are logged in sucessfully.");
如果你不想做它在頁面加載,但你希望它被後面的代碼來驅動(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>
在服務器端,你可以返回你想要的迴應說什麼字符串,如然後id'ed「響應」的元素都會有其內在的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>
顯然這假設你有你需要的數據處理登錄請求之前th安永進入,這將是一個有點弄巧成拙,所以你可以使用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>
非常好詳細的解答。我不使用MVC所以我可以在ASP.NET webforms中使用它嗎? – 2013-03-31 08:22:52
爲Webforms添加了一個代碼示例。在Page_Load函數內部,如果它是AJAX登錄,則需要攔截,只需在Ajax調用中爲數據行添加一個額外變量,併爲其自身添加一個切換標誌,然後檢查並調用正確的函數。然後,只需將JS中的Ajax請求URL更改爲指向該頁面的URL即可。 – 2013-04-01 17:40:17
此外,這是非常不安全的代碼,我不會把它投入生產,你應該做請求驗證和所有這一切。 – 2013-04-01 17:41:14
你需要創建一個generic-http-handler
或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");
}
}
的處理程序和按鈕客戶端點擊
$.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);
}
});
我不熟悉'generic-http-handler'。我正在使用ASP.Net webforms。它適用於那裏嗎? – 2013-04-02 04:00:47
是的,它絕對就像一個沒有設計師頁面的頁面。 [這是一個很好的例子](http://encosia.com/use-asp-nets-httphandler-to-bridge-the-cross-domain-gap/) – 2013-04-02 04:17:59
調用它通過jQuery的這是我爲前面做什麼,但它不是像計算器的警報 – 2013-03-29 17:20:21