要添加一个警告框,像计算器。 我看到一些很好的例子,但不是我想要的东西。 我想这是出现在不同的场合不同的消息。
恩。 我想从C#,当用户登录密码这条消息。 此外,当用户下订单。 什么是错的。
这个答案是好的,但该消息出现在页面加载。 另一个例子表现出同样的。
要添加一个警告框,像计算器。 我看到一些很好的例子,但不是我想要的东西。 我想这是出现在不同的场合不同的消息。
恩。 我想从C#,当用户登录密码这条消息。 此外,当用户下订单。 什么是错的。
这个答案是好的,但该消息出现在页面加载。 另一个例子表现出同样的。
您需要创建一个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");
}
}
并调用它通过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);
}
});
如果你不想做它在页面加载,但你希望它被后面的代码驱动(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>
显然,这假设你有你需要的过程中,他们进入之前的登录请求,这将是一个有点弄巧成拙,所以你可以使用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>
尝试这个
public void message(string msg)
{
ScriptManager.RegisterClientScriptBlock(this, GetType(), "Done", "alert('" + msg + "');", true);
}
使用此方法
写message("You are logged in sucessfully.");