Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从控制器调用jquery函数,以及如何从jquery调用控制器_C#_Asp.net Mvc_Razor - Fatal编程技术网

C# 如何从控制器调用jquery函数,以及如何从jquery调用控制器

C# 如何从控制器调用jquery函数,以及如何从jquery调用控制器,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,您好,guyz,我如何从我的homecontroller.cs调用我的registernewacct.cshtml中的jquery函数。回到城堡 我在homecontroller.cs中的代码 [AcceptVerbs(HttpVerbs.Get)] private bool IsValidRegisterNewAcct(string acctname, string dispname, string email, string password) {

您好,guyz,我如何从我的
homecontroller.cs
调用我的
registernewacct.cshtml
中的jquery函数。回到城堡

我在homecontroller.cs中的代码

        [AcceptVerbs(HttpVerbs.Get)]
    private bool IsValidRegisterNewAcct(string acctname, string dispname, string email, string password)
    {
        var crypto = new SimpleCrypto.PBKDF2();
        bool IsValid = false;
        IsValidErrorMessage = "";
        IsValidErrorMessageInt = 0;
        string NewAcctNameHash = MD5(acctname);
        string NewEmailHash = MD5(email);
        try
        {
            using (var db = new MainDbContext())
            {

                var NewAcctName = db.user.FirstOrDefault(u => u.AcctNameSalt == NewAcctNameHash);

                if (NewAcctName != null)
                {
                    IsValid = false;
                    IsValidErrorMessage = "Account Name already Exist!";
                }
                else
                {
                    var NewEmail = db.user.FirstOrDefault(u => u.EmailSalt == NewEmailHash);
                    if (NewEmail != null)
                    {
                        IsValid = false;
                        IsValidErrorMessage = "Email Address already Exist!";
                    }
                    else
                    {
                        //THIS AREA <-- I wan to call my jquery function in my registernewacct.cshtml which is the dialog confirmation will ask if save or not. now if the answer is yes then it will return value yes. if not then it will return not.


                        var InsertNewAcctName = db.user.CreateObject();

                        InsertNewAcctName.UserId = Convert.ToString(Guid.NewGuid());
                        InsertNewAcctName.AcctName = acctname;
                        InsertNewAcctName.AcctNameSalt = NewAcctNameHash;
                        InsertNewAcctName.DisplayName = dispname;
                        InsertNewAcctName.Email = email;
                        InsertNewAcctName.EmailSalt = MD5(email);
                        InsertNewAcctName.Password = crypto.Compute(password);
                        InsertNewAcctName.PasswordSalt = crypto.Salt;
                        InsertNewAcctName.UserLevel = 2;

                        db.osoa_user.AddObject(InsertNewAcctName);

                        db.SaveChanges();
                        IsValid = true;
                    }
                }
            }
        }

你能给我一些建议吗?非常感谢使用Jquery Ajax请求从客户端呼叫服务器。 从服务器端到客户端,您不能这样做,因为当您在服务器端时,客户端没有javascript函数。
您需要了解服务器端语言和客户端语言之间的差异。

使用Jquery Ajax请求从客户端调用服务器。 从服务器端到客户端,您不能这样做,因为当您在服务器端时,客户端没有javascript函数。
您需要了解服务器端和客户端语言之间的差异。

读一读服务器端和客户端代码之间的差异可能会对您有所帮助;它们不是完全可以互换的,如果您假设可以随意来回调用,您可能会遇到一些逻辑问题。您的C代码代码示例表明,您试图在控制器方法中间从用户那里得到确认,这不是控制器方法应该如何工作。如果您想要这样做,您可能应该考虑:

  • 使用客户端验证(jQuery有一个验证插件)
  • 在发布之前使用AJAX请求进行验证,而不是在发布之后进行验证
  • 将此操作一分为二
话虽如此,有些地方您希望将控制权从一个传递到另一个,因此以下是如何:

从客户端调用服务器端代码(如控制器方法):

一句话,AJAX。您可以使用jQuery的AJAX支持或ASP.NETMVC的
AJAX.Action
和其他AJAX助手。无论如何,基本上需要将数据发布到一个URL,该URL路由到控制器方法。默认情况下,这将是
www.example.com/{controller}/{method}/{param}
,其中
param
是可选的。将POST请求的JSON数据负载的属性命名为控制器方法所期望的参数。获取该方法以返回一个JSON对象(有一个内置的
JSON()
)转换),该JSON对象将被传递到AJAX成功处理程序中

从服务器调用客户端代码:

严格来说不可能;您不能直接调用,但有几种方法可以触发客户端上的代码:

  • 最简单的方法是将代码放入
    $(document).ready()
    中,当加载页面时,它将运行
  • 要在页面加载以外的时间运行代码,请让客户端定期(通过AJAX)与服务器检查是否应该运行某些代码。当您想要“调用”客户端代码时,让服务器用表示“是”的内容进行回复,然后当客户端得到响应时,它运行代码。这种方法的问题是,它需要页面不断发送请求,这会消耗带宽和处理能力,通常对于大型内容来说是个坏主意,尽管您会看到它在涉及非常少量数据和/或非常不频繁的请求中使用得相当多

读一点服务器端和客户端代码之间的差异可能会有帮助;它们不是完全可以互换的,如果您假设可以随意来回调用,您可能会遇到一些逻辑问题。您的C代码代码示例表明,您试图在控制器方法中间从用户那里得到确认,这不是控制器方法应该如何工作。如果您想要这样做,您可能应该考虑:

  • 使用客户端验证(jQuery有一个验证插件)
  • 在发布之前使用AJAX请求进行验证,而不是在发布之后进行验证
  • 将此操作一分为二
话虽如此,有些地方您希望将控制权从一个传递到另一个,因此以下是如何:

从客户端调用服务器端代码(如控制器方法):

一句话,AJAX。您可以使用jQuery的AJAX支持或ASP.NETMVC的
AJAX.Action
和其他AJAX助手。无论如何,基本上需要将数据发布到一个URL,该URL路由到控制器方法。默认情况下,这将是
www.example.com/{controller}/{method}/{param}
,其中
param
是可选的。将POST请求的JSON数据负载的属性命名为控制器方法所期望的参数。获取该方法以返回一个JSON对象(有一个内置的
JSON()
)转换),该JSON对象将被传递到AJAX成功处理程序中

从服务器调用客户端代码:

严格来说不可能;您不能直接调用,但有几种方法可以触发客户端上的代码:

  • 最简单的方法是将代码放入
    $(document).ready()
    中,当加载页面时,它将运行
  • 要在页面加载以外的时间运行代码,请让客户端定期(通过AJAX)与服务器检查是否应该运行某些代码。当您想要“调用”客户端代码时,让服务器用表示“是”的内容进行回复,然后当客户端得到响应时,它运行代码。这种方法的问题是,它需要页面不断发送请求,这会消耗带宽和处理能力,通常对于大型内容来说是个坏主意,尽管您会看到它在涉及非常少量数据和/或非常不频繁的请求中使用得相当多

我无法帮助您,因为您不知道什么是服务器端和客户端以及它们如何通信。而且,您的mvc逻辑非常糟糕。在开始编码之前,您必须了解一些事情。如果你想在控制器的中间向用户询问某事
    @section Scripts{
    <script>
        $(document).ready(function(){
            //THIS IS FOR THE CANCEL ACCOUNT DIALOG
            function OpenDialogConfirmation(){
                $( "#SaveDialogPage" ).dialog( "open" );
            }

            $("#yessavedialog").click(function(e) {
                $( "#SaveDialogPage" ).dialog( "close" );
                //then the code here that will pass my value back to homecontroller.cs....
            });


            $("#cancelsavedialog").click(function(e) {
                $( "#SaveDialogPage" ).dialog( "close" );
                //then the code here that will pass my value back to homecontroller.cs....
            });

        });
    </script>
}