你好怎么我可以从registernewacct.cshtml
调用homecontroller.cs
中的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;
}
}
}
}
这是我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>
}
你可以给我一些建议吗?非常感谢
答案 0 :(得分:2)
它可能会帮助您阅读一些内容,以了解服务器端和客户端代码之间的差异;它们不是完全可以互换的,如果你认为可以随意来回调用,你可能会遇到一些逻辑问题。您的C#代码示例显示您正试图在控制器方法的中间获得用户的确认 - 这不是控制器方法应该如何工作。如果你想要这个,你应该考虑:
话虽如此,有些地方你想要将控制从一个传递到另一个,所以这里是如何:
从客户端调用服务器端代码(例如控制器方法):
总之,AJAX。您可以使用jQuery的AJAX支持或ASP.NET MVC的Ajax.Action
和其他AJAX帮助程序。无论如何,您基本上都需要将数据POST到路由到控制器方法的URL。默认情况下,www.example.com/{controller}/{method}/{param}
是可选的param
。将POST请求的JSON数据有效内容的属性命名为控制器方法所期望的参数。获取该方法以返回JSON对象(有一个内置的Json()
)转换)并且该JSON对象将被传递到AJAX成功处理程序。
从服务器调用客户端代码:
不严格可能;你不能直接打电话,但有办法在客户端上触发代码:
$(document).ready()
中,并在页面加载时运行。答案 1 :(得分:1)
使用Jquery Ajax请求从客户端调用服务器。 从服务器到客户端你不能因为当你在服务器端时没有javascript功能客户端。 您需要了解服务器端和客户端语言之间的差异。