【问题标题】:Calling Jquery function from .Net, with parameters从.Net调用Jquery函数,带参数
【发布时间】:2013-08-25 06:13:47
【问题描述】:

我有一个 .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

【问题讨论】:

    标签: c# jquery asp.net


    【解决方案1】:

    试试这个

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

    希望对你有帮助

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        我假设您的 btn_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);
                     }
                  }
             )
        })
        

        【讨论】:

        • 我认为他使用 WebForms 来查看方法签名。
        • 如果是这样,那他可能会觉得this one有用
        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-01-21
          • 2013-10-27
          • 1970-01-01
          • 2013-07-18
          • 2014-04-02
          • 2013-02-17
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多