2017-09-26 2 views
0

古典的なASP.NetMVCプロジェクトでは、代わりにボタンに登録リンク機能を移動したいと考えています。 (ボタンをクリックするとレジスタクリックが発生します)。十分に簡単!私は以下のことをしました。javascriptからデフォルトのRegisterメソッドを呼び出す方法は? asp.net mvcで?

Login.cshtml

<div class="form-group col-md-8 col-md-push-1"> 
    <div class="row"> 
     <input type="submit" value="Log in" class="btn btn-primary" /> 
     <input type="button" value="Register" class="btn btn-primary" onclick="register();"/> 
    </div> 
</div> 

は今すぐアカウントコントローラで登録する機能は2つのオーバーロード

public ActionResult Register() 
{ 
    return View(); 
} 

public async Task<ActionResult> Register(RegisterViewModel model) 
{ 
    if (ModelState.IsValid) 
    { 
     var geUser = new User { Password = model.Password, Username = model.Email, AccessLevel = "0003", LoggedIn = false, Active = true, AllowOffline = false, LastSettingsRefreshed = DateTime.Now }; 

     var user = new ApplicationUser() { UserName = model.Email, Email = model.Email, user = geUser}; 
     IdentityResult result = await UserManager.CreateAsync(user, model.Password); 
     if (result.Succeeded) 
     { 
      await SignInAsync(user, isPersistent: false); 

      // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771 
      // Send an email with this link 
      // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id); 
      // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme); 
      // await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>"); 

      return RedirectToAction("Index", "Home"); 
     } 
     else 
     { 
      AddErrors(result); 
     } 
    } 

    // If we got this far, something failed, redisplay form 
    return View(model); 
} 

Sを持って、同じページ

<script type="text/javascript"> 
    function register() { 
     $.ajax({ 
      url: "@Url.Action("Register", "Account")", 
      success: function (data) { 
       alert('success'); 
      }, 
      type: 'GET' 
     }); 
    } 
</script> 

にスクリプトを追加しました今すぐ最初のものの代わりに2番目の関数を呼びたいと思います...

  • どのように私はjavascriptからRegisterViewModelを渡すのですか? OR
  • 現在、パラメータを持たない関数を呼び出すときに、レジスタページにリダイレクトするように変更することはできますか?

RegisterViewModel

public class RegisterViewModel 
{ 
    [Required]   
    [Display(Name = "Username")] 
    public string Email { get; set; } 

    [Required] 
    [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] 
    [DataType(DataType.Password)] 
    [Display(Name = "Password")] 
    public string Password { get; set; } 

    [DataType(DataType.Password)] 
    [Display(Name = "Confirm password")] 
    [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")] 
    public string ConfirmPassword { get; set; } 
} 

enter image description here

+0

スタートを見せていたステファン・ミュエッケによって示唆されるようにしていますそれを 'type: 'GET' 'に変更することによって。しかし、あなたは 'RegisterViewModel'のビューの関連部分を表示していないので、そのモデルに関連付けられたデータをどのように送るべきかを知ることは不可能です。 –

+0

そして 'return RedirectToAction(" Index "、" Home ");' POSTメソッドでは無意味です - それとajaxコールとajaxコールは決してリダイレクトされません。なぜ通常のサブミットの代わりにajaxコールを作成したいのですが、同じbviewにログインフォームと登録フォームが両方ともあるのはなぜですか? –

+0

こんにちはスティーブン。私はRegisterViewModelを追加しました – Samra

答えて

0

だから私は単に代わりに、ボタンのアクションリンクを使用して、ボタンコントロールのよう

関連する問題