使用参数从.Net调用Jquery函数

时间:2013-08-25 06:13:48

标签: c# jquery asp.net

我有一个.Net方法,它对一个对象进行一些验证,然后,我需要向用户显示问题。

我正在尝试使用我发现的jquery消息框:

jquery函数:

function ShowPopup() {
    $.msgBox({
        title: "Unable to save",
        content: "An error has occured while saving the object."
    });
}

我需要从.Net方法调用它,传递一个字符串列表。那可能吗?然后将content属性设置为错误列表?

我的.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函数来自here

4 个答案:

答案 0 :(得分:1)

试试这个

if (result.Success == false)
 {
     // Show an error.
     ScriptManager.RegisterStartupScript(Page, Page.GetType(), "close", "ShowPopup(parm1,parm2);", true);   
     return;
 }

希望它会帮助你

答案 1 :(得分:1)

您可以使用ClientScriptManager http://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
    });
}

答案 2 :(得分:0)

我假设您的btn_Save方法会响应客户端事件而触发,例如用户单击“保存”按钮。我也假设你正在使用MVC。如果是这种情况,那么完成所需内容的最佳方法是使客户端上的“保存”按钮触发$ .click事件。在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);
             }
          }
     )
})

答案 3 :(得分:0)

你可以这样用ScriptManager调用你的jQuery方法:

if (result.Success == false)
     {
         ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "tmp", "<script type='text/javascript'>ShowPopup();</script>", false);
         return;
     }