2011-06-30 13 views
0

私はコントローラ内のアクションメソッドからポップアップを開く必要があります。アクションメソッドは、基本的にユーザーを登録しています。コントローラ内のアクションメソッドからjquery関数を呼び出す方法は?

[HttpPost] 
public ActionResult Register(RegisterModel model) 
{ 
    if (ModelState.IsValid) 
    {    
     MembershipCreateStatus createStatus; 
     Membership.CreateUser(model.UserName, model.Password, model.Email, null, null, true, null, out createStatus); 

     if (createStatus == MembershipCreateStatus.Success) 
     { 
      FormsAuthentication.SetAuthCookie(model.UserName, false /* createPersistentCookie */); 
      //------------------------------------------ 
      //I need to call a jquery function from here 
      //------------------------------------------ 
      return RedirectToAction("Index", "Home"); 
     } 
     else 
     { 
      ModelState.AddModelError("", ErrorCodeToString(createStatus)); 
     } 
    } 

    return View(model); 
} 

jqueryの機能は、ビュー内に存在する、ちょうど隠しDIVは、見えるようになり、ポップアップを表すために、など、不透明度を設定します。

このようなjquery関数を上記のコントローラのアクションメソッドから呼び出す必要があります。

答えて

2

クライアントサイドスクリプトをサーバーから呼び出すことはできません。ただし、サーバー側でインジケータを設定して、クライアント側がその動作を判断できるようにすることができます。

ShowModalPopupというモデルでboolを設定し、createStatus == MembershipCreateStatus.Successの場合は、そのboolをtrueに設定します。

@Html.HiddenFor(model => model.ShowModalPopup, new { id = "_showModalPopup" }) //add the id attribute for added performace 

とあなたのjqueryの中:

$(document).ready(function() 
{ 
    if($('#_showModalPopup').val() == 'true') 
    { 
     //call your jquery modal popup method 
    } 
}); 

今、あなたのビューで、インジケータを書き出します

0

私はdotnet技術の専門家ではありません。 私の見解では、サーバー側スクリプトとクライアント側スクリプトは別々にする必要があります。

としてjavascript jqueryはクライアント側で、ドットネットはサーバー側です。

サーバはリクエストを処理し、サーバスクリプトを処理してユーザブラウザに出力し、ユーザ側でのみjquery関数が実行されます。

基本的には、クライアントブラウザで実行する必要があるものすべてを表示(html)します。 jqueryとjavascriptおそらくスクリプトタグでhtmlで実行する必要があります。

<script type="text/javascript"> 
    jQuery(function(){ 
     //call your function here 
    }); 
</script> 

私が助けても質問が分からないのか分かりません。申し訳ありません

関連する問題