2013-05-01 2 views
0

안녕하세요 guyz 내 registernewacct.cshtml에서 jquery 함수를 호출 할 수있는 내 homecontroller.cs. 다시와 요새 ....jquery 함수를 컨트롤러에서 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> 
} 

당신이 나에게 조언을 줄 수 있습니까? 덕분에 많이

답변

2

서버 측 코드와 클라이언트 측 코드의 차이점을 조금이라도 읽는 데 도움이 될 수 있습니다. 정확히 상호 교환 할 수있는 것은 아니며, 의지대로 앞뒤로 전화를 걸 수 있다고 가정하면 논리 문제가 발생할 수 있습니다. C# 코드 샘플은 컨트롤러 메서드 중간에 사용자로부터 확인을 얻으려고한다는 것을 보여줍니다. 컨트롤러 메서드가 작동하는 방식이 아닙니다. 당신이 원한다면, 당신은 아마 고려해야합니다

  • 클라이언트 측 유효성 검사를 사용하여 (JQuery와 유효성 검사 플러그인을 가지고)
  • AJAX 요청을 사용하여 게시보다는 나중에
  • 분할이 작업을 그 일을하기 전에 확인하기 이

에, 당신이 다른 하나에서 제어를 전달하려는 것 장소 그래서 여기에 있다는 것을 말해 두 겠는데 방법 :

서버 측 코드 (예 : 컨트롤러 메소드)를 클라이언트에서 가져옵니다.

즉, AJAX. jQuery의 AJAX 지원 또는 ASP.NET MVC의 Ajax.Action 및 기타 AJAX 도우미를 사용할 수 있습니다. 그러나 그렇게하면 기본적으로 컨트롤러 메서드로 라우팅되는 URL에 데이터를 POST해야합니다. 기본적으로 param은 선택 사항 인 www.example.com/{controller}/{method}/{param}입니다. POST 메소드의 JSON 데이터 페이로드의 속성을 컨트롤러 메소드가 예상하는 매개 변수와 동일하게 지정하십시오. JSON 객체 (내장 된 Json() 변환)를 반환하는 메소드를 가져오고 JSON 객체는 AJAX 성공 처리기로 전달됩니다.

서버에서 클라이언트 측 코드를 호출하려면 : 엄격 가능하지

; 당신은 정말 직접 호출 할 수 있지만 클라이언트에서 코드를 실행할 수있는 방법이 있습니다 : 간단한는

  • $(document).ready()에 코드를 넣어이와 페이지가로드 될 때 실행됩니다.
  • 페이지로드 이외의 시간에 코드를 실행하려면 클라이언트가 AJAX를 통해 서버에서 주기적으로 코드를 실행해야하는지 여부를 확인하게하십시오. 클라이언트 측 코드를 "호출"하고 싶을 때 서버가 "예"라는 의미로 응답하도록 한 다음 클라이언트가 해당 응답을 받으면 코드를 실행합니다.이 방법의 문제점은 페이지가 대역폭과 처리 능력을 소모하는 요청을 계속 보내야한다는 것이며 큰 금액의 요청에 대해 공정한 비트를 사용 했음에도 불구하고 큰 물건에 대해서는 일반적으로 좋지 않은 아이디어입니다 그리고/또는 매우 드물다.
+0

감사합니다 : D .. 나는 다시 내 프로그램을 수정하려고합니다 :) – user2328935

1

Jquery Ajax 요청으로 클라이언트 측에서 서버로 호출. 서버 측에서 클라이언트 측까지 자바 스크립트 기능이 없으므로 서버 측에서 클라이언트 측으로 이동할 수 없습니다. 서버 측과 클라이언트 측 언어의 차이점을 이해해야합니다.

+0

그래서이 경우에 어떤 방향으로 무엇을 할 것인지 알려 주실 수 있습니까? – user2328935

+1

서버와 클라이언트 측이 무엇이고 어떻게 통신하는지 잘 모를 때 도움이되지 않습니다. 또한 귀하의 mvc 논리가 매우 나쁘다. 코딩을 시작하기 전에 모든 것을 이해해야합니다. 컨트롤러 중간에서 사용자에게 무엇인가를 묻고 싶다면 해당 컨트롤러를 두 개로 나누고 요청하는보기를 보냅니다. 그러나 내가 말한 것에 대해 생각해보십시오. 먼저 논리를 연구하십시오. –

관련 문제