0

嗨,伙计们,我如何registernewacct.cshtml从我的homecontroller.cs. 和回来和堡垒....

我的代码在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;
                    }
                }
            }
        }

这是我的代码registernewacct.cshtml

    @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>
}

你能给我一些建议吗?多谢

4

2 回答 2

2

它可能会帮助您阅读一些内容以了解服务器端代码和客户端代码之间的差异;它们并不是完全可以互换的,如果你假设你可以随意来回调用,你可能会遇到一些逻辑问题。您的 C# 代码示例显示您正试图在控制器方法的中间获得用户的确认 - 这不是控制器方法的工作方式。如果你想要这个,你可能应该考虑:

  • 使用客户端验证(jQuery 有一个验证插件)
  • 在 POST 之前使用 AJAX 请求进行验证,而不是事后进行验证
  • 将此动作一分为二

话虽如此,有些地方您希望将控制权从一个地方传递到另一个地方,因此方法如下:

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

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

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

严格来说不可能;您不能真正直接调用,但有一些方法可以在客户端触发代码:

  • 最简单的方法是将您的代码放入其中$(document).ready(),它会在页面加载时运行。
  • 要在页面加载以外的时间运行代码,请让客户端定期检查服务器(通过 AJAX)是否应该运行某些代码。当您想“调用”客户端代码时,让服务器回复意味着“是”的内容,然后当客户端收到该响应时,它会运行代码。这种方法的问题是它需要页面不断发送请求,这会消耗带宽和处理能力,并且通常对于大的东西来说是个坏主意,尽管你会看到它在涉及非常少量的请求时使用了相当多的位数据和/或相当罕见。
于 2013-05-01T10:34:58.073 回答
1

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

于 2013-05-01T10:08:21.740 回答