使用参数从.Net调用Jquery函数
本文关键字:调用 Jquery 函数 Net 参数 | 更新日期: 2023-09-27 18:28:51
我有一个.Net方法,它对对象进行一些验证,然后,我需要向用户显示问题。
我正在尝试使用我发现的jquery消息框:
jquery函数:
function ShowPopup() {
$.msgBox({
title: "Unable to save",
content: "An error has occured while saving the object."
});
}
我需要从.Net方法调用它,并向它传递一个字符串列表。这可能吗?然后将内容属性设置为错误列表?
我的.Net保存方法,可能会触发这个弹出窗口,看起来像这样:
protected void btnSave_Click(object sender, EventArgs e)
{
var o = new UserDto
{
DisplayName = txtName.Text,
Email = txtEmail.Text,
Username = txtUsername.Text,
Password = txtPassword.Text,
TimeZoneId = ddZones.SelectedValue,
Id = Session["SelectedUserId"] == null ? 0 : int.Parse(Session["SelectedUserId"].ToString())
};
var result = new UserService(Common.CurrentUserId()).SaveUser(o);
if (result.Success == false)
{
// Show an error.
return;
}
Response.Redirect("users.aspx");
}
如果成功是错误的,我想给它一个错误列表,并显示弹出窗口。
jQuery函数来自这里。
试试这个
if (result.Success == false)
{
// Show an error.
ScriptManager.RegisterStartupScript(Page, Page.GetType(), "close", "ShowPopup(parm1,parm2);", true);
return;
}
希望它能帮助你
您可以使用ClientScriptManagerhttp://msdn.microsoft.com/es-es/library/asz8zsxy.aspx将您的javascript注入页面。
protected void btnSave_Click(object sender, EventArgs e)
{
var o = new UserDto
{
DisplayName = txtName.Text,
Email = txtEmail.Text,
Username = txtUsername.Text,
Password = txtPassword.Text,
TimeZoneId = ddZones.SelectedValue,
Id = Session["SelectedUserId"] == null ? 0 : int.Parse(Session["SelectedUserId"].ToString())
};
var result = new UserService(Common.CurrentUserId()).SaveUser(o);
if (result.Success == false)
{
// Define the name and type of the client scripts on the page.
String csname1 = "MessageBoxScript";
Type cstype = this.GetType();
// Get a ClientScriptManager reference from the Page class.
ClientScriptManager cs = Page.ClientScript;
// Check to see if the startup script is already registered.
if (!cs.IsStartupScriptRegistered(cstype, csname1))
{
StringBuilder cstext1 = new StringBuilder();
cstext1.Append("<script type=text/javascript> $.msgBox({title: 'Unable to save',content: 'An error has occured while saving the object.'}); </");
cstext1.Append("script>");
cs.RegisterStartupScript(cstype, csname1, cstext1.ToString());
}
return;
}
Response.Redirect("users.aspx");
}
另一种选择是将您的错误保存在会话变量中,如:
C#
Session["Errors"] = "My errors";
Javascript:
var errors = '<%=Session["errors"]%>';
if(errors){
$.msgBox({
title: "Unable to save",
content: errors
});
}
我假设您的btn_Save方法会在响应客户端事件时触发,例如用户单击Save按钮。我还假设您正在使用MVC。如果是这样的话,那么实现您想要的目标的最佳方法就是让客户端上的Save按钮触发$.click事件。在点击事件中,使用ajax调用MVC控制器Save方法。这样,Save方法可以从服务器返回JSON,并且可以在客户端上显示返回的消息。类似这样的东西:
服务器:
[HttpPost]
public ActionResult Save(object myData)
{
return Json(new {message="Hello World"});
}
客户:
$('#saveBtn').click(function()
{
$.post('@Url.Action("Save")',
{myData: data},
function(result){
if (result){
showPopup(result);
}
}
)
})
您可以用ScriptManager这样调用jQuery方法:
if (result.Success == false)
{
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "tmp", "<script type='text/javascript'>ShowPopup();</script>", false);
return;
}