我試著在bootrap modal pop up &中加載部分視圖頁面和視圖頁面;也試著在點擊注冊按鈕時使用jquery ajax來呼叫動作控制器(在部分視圖或視圖中)。
我在asp.net MVC中使用了一個布局頁面,在首頁點擊 "開始 "按鈕時,我加載了一個帶有注冊頁面的bootstrap彈出式模態&里面當我點擊 "注冊 "按鈕時,它應該呼叫賬戶控制器中的注冊動作。我沒有錯誤,但它沒有呼叫動作控制器。 _LandingLayout.cshtml
<!DOCTYPE html>
<html>
<head>
< meta name="viewport" content="width=device-width" />
<title>@ViewBag.Title</title>
</head>
<body>
<div>
@RenderBody()
@RenderSection("Rscripts", required: false)
</div>/span>
</body>
</html>
Index.cshtml
@{
ViewBag.Title = "Index";
Layout = "~/Areas/Landing/Views/Shared/_LandingLayout.cshtml"。
}
<! DOCTYPE html>
<html>
<head>
< meta name="viewport" content="width=device-width, initial-scale=1">
<title>自行車云</title>/span>
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.6 /css/bootstrap.min.css" rel="styleheet" type="text/css" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome. min.css" type="text/css" rel=" stylesheet" />
<link href="https://fonts.googleapis.com/icon? family=Material Icons" rel="styleheet" type="text/css" />
<link href="~/Areas/Landing/Content/Landing。 css" type="text/css" rel="styleheet" />
@{
ViewBag.Title = "Index"。
}
<script src="https://cdnjs. cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>/span>
<script src="~/Scripts/jquery. validate.min.js"></script>
<script src="~/Scripts/modernizr-2. 8.3.js"></script>
<script src="https://cdnjs.cloudflare. com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>/span>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.6 /js/bootstrap.min.js"></script>
< script type="text/javascript" src="~/Areas/Landing/Script/Landing。 js">/span></script>
</head>
<body>
<!-- ============================================================== -->
<!-- Preloader -- style you can find in spinners.css -->
<!-- ============================================================== -->
<div class="preloader">/span>
<div class="lds-ripple">
<div class="lds-pos"> </div>>
<div class="lds-pos"> </div>>
</div>/span>
</div>/span>
<div class="wrapper">
<section class="hero">
<header>/span>
<div class="container">
<nav class="navbar navbar-light navbar-toggleable-sm"/span>>
< a href="#" class=" navbar-brand mb-0" > 產品-云</a>。
< button class="navbar-toggler navbar-toggler-right" 型別="按鈕" data-toggle="折疊" data- target="#headerNav" aria-controls="headerNav" aria-expanded="false" aria-label="Toggle navigation"/span>>
<span class="navbar-toggler-icon"/span>> </span>>
</button>
< div id="headerNav" class="collapse navbar-collapse justify-content-end" >/span>
<ul class="navbar-nav">
<li class="nav-item">/span>
< a class="nav-link" href="#sec-about"> 關于</a>
</li>/span>
<li class="nav-item">
< a class="nav-link" href="#sec-features"> Features</a>。
</li>/span>
<li class="nav-item">
< a class="nav-link" href="#sec-pricing"> 定價</a>。
</li>/span>
<li class="nav-item">
< a class="nav-link" href="#sec-testimonials" /span>> Testimonials</a>。
</li>/span>
<li class="nav-item">
< a class="nav-link" href="#sec-contact" /span>> 聯系人</a>
</li>/span>
</ul>
@*Html.RenderAction("action", "controller", new { area = "Area", model = ViewData.Model }).*@
@*@Html.Partial("~/Views/Account/_LoginPartial.cshtml",null)*@
@*@Html.Partial("_LoginPartial")*@
</div>
</nav>/span>
</div>/span>
</header>/span>
<div class="jumbotron jumbotron-fluid mb-0"/span>>
<div class="container">
<div class="row justify-content-center text-center"/span>>
<div class="col-md-10 col-lg-6">
<h1 class="display-5"/span>> 最佳銷售云解決方案 </h1>
<p class="lead">您的所有資料都在您的指尖 - 使您對業務作出明智和精確的決定。 </p>
<p class="lead">
< a href="#" class="btn-primary btn-lg" role="button" data-toggle="modal" data-target="#largeModal"> 開始</a>
</p>/span>
</div>/span>
</div>/span>
<!-- large modal -->
< div class="container mt-5 pt-5 modal fade" id="largeModal" tabindex="-1" role="dialog" aria- labelledby="basicModal" aria-hidden="true">
<div class="card mx-auto border-0">
<div class="card-header border-bottom-0 bg-transparent" >
< button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true"/span>> ×</span>
</button>
< ul class="nav nav-tabs justify-content-center pt-4" id="pills-tab"/span> role="tablist"/span>>
<li class="nav-item"/span>>
< a class="nav-link active text-primary" id="pills-login-tab" data-toggle="pill" href="#pills-login" role="tab" aria-controls="pills-login"
aria-selected="true">Login</a>/span>
</li>/span>
<li class="nav-item">
< a class="nav-link text-primary" id="pills-register-tab" data-toggle="pill" href="#pills-register" role="tab" aria-controls="pills-register"
aria-selected="false">Register</a>
</li>/span>
</ul>/span>
</div>/span>
<div class="card-body pb-4">/span>
< div class="tab-content" id="pills-tabContent">/span>
< div class="tab-pane fade show active" id="pills- login" role="tabpanel" aria-labelledby="pills-login-tab">
@Html.Partial("_Login")
@*@RenderPage("~/Areas/Landing/Views/Account/Login.cshtml")*@
</div>
< div class="tab-pane fade" id="pills- register" role="tabpanel" aria-labelledby="pills-register-tab">
@*@RenderPage("~/Areas/Landing/Views/Account/Register.cshtml")*@
@Html.Partial("~/Areas/Landing/Views/Account/_Register.cshtml")。
@*@Html.Partial("_Register")*@
</div>
</div>/span>
</div>/span>
</div>/span>
</div>/span>
</div>/span>
</div>/span>
</section>/span>
<footer class="footer">
<div class="容器">
<ul class="list-inline mb-0 text-center"/span>>
<li class="list-inline-item"/span>>
<a href="">< span class="fa fa-twitter" > </span></a>
</li>/span>
<li class="list-inline-item">/span>
<a href="">< span class="fa fa-google-plus"/span>> </span></a>
</li>/span>
<li class="list-inline-item">/span>
<a href="">< span class="fa fa-instagram"/span>> </span></a>
</li>/span>
<li class="list-inline-item">/span>
<a href="">< span class="fa fa-ene-o"> </span></a>
</li>/span>
</ul>/span>
</div>/span>
</footer>
</div>
@*@RenderBody()*@
</body>
</html>/span>
_Register.cshtml
@using RepotingSystem.Area.Landing.Models
@model RegisterViewModel
@{
ViewBag.Title = "Register";
布局=null。
}
<! DOCTYPE html>
<html>
<head>
< meta name="viewport" content="width=device-width" />
<title></title>
<script>
$(document).ready(function () {
function register()
{
var jsondata = "{email: email , password: password}";
$.ajax({
url: '@Url.Action("Register", "Account")'/span>,
data: $('#createForm').serialize()。
type: 'post'。
contentType: "application/json; charset=utf-8"。
success: function (data) {
alert("pass")。
},
error: function (xhr, status) {.
}
});
return false;
};
});
</script>>
</head>
<body>
<form>
@using (Html.BeginForm("Register", "Account", FormMethod.Post, new { @class = "form-horizontal", role = "form" })
{
@Html.AntiForgeryToken()
<hr />/span>
@Html.ValidationSummary("", new { @class = "text-danger" })
<div class="form-group">
<div class="col-md-10">/span>
@Html.TextBoxFor(m => m.Email, new { @class = "form-control", id = "registerEmail", placeholder = "Email", required = "required", autofocus = "" })
</div>
</div>/span>
<div class="form-group">
<div class="col-md-10">/span>
@Html.PasswordFor(m => m.Password, new { @class = "form-control", id = "registerPassword", placeholder = "Password", required = "required", autofocus = "" })
</div>
</div>/span>
<div class="form-group">
<div class="col-md-10">/span>
@Html.PasswordFor(m => m.ConfirmPassword, new { @class = "form-control", id = "registerConfirmedPassword", placeholder = "Confirm Password", required = "required", autofocus = "" })
</div>
</div>/span>
<div class="form-group">
<div class="col-md-offset-2 col-md-10"/span>>
<!-- This REDIRECTS TO BLANK REGISTER VIEW WHICH ISNT I WANT AND IT DOES NOT IMPLEMENTREGISTER ACTION ON ACCOUNTCONTROLLER -->
@*< button class="btn btn-info" type="button" id="addressSearch onclick="location. href='@Url.Action("Register", "Account")'" >Register</button> *@
<!----------------------------OR------------------------------------->
<!--這個按鈕存在于ASP.NET MVC專案的默認REGISTER VIEW REGISTER.CSHTML中,具有默認的授權(主頁面中沒有POP UP)& 這個按鈕在ACCOUNTCONTROLLER上呼叫REGISTER動作-->**<!
@*< input type="submit" class="btn btn-default" value="Register" /> *@
< input type="submit" value="Registration" class="btn btn-default" id="btnRegister" onclick="register()。return false;" />
</div>
</div>
}
</form>
</body>
</html>
AccountController.cs
using System;
using System.Globalization;
using System.Linq;
using System.Security.Claims;
using System.Threading.Tasks;
using System.Web.Mvc;
using Microsoft.AspNet.Identity.EntityFramework;
using Microsoft.AspNet.Identity.Owin;
using Microsoft.Owin.Security.Definition.Definition.Definition.Definition
using ReportingSystem;
using RepotingSystem.Areas.Landing.Models;
namespace RepotingSystem.Areas.Landing
{
[Authorize]。
[RoutePrefix("Ling/Account")]
public class AccountController : Controller
{
private ApplicationSignInManager _signInManager;
private ApplicationUserManager _userManager;
public AccountController()
{
}
public AccountController(ApplicationUserManager userManager, ApplicationSignInManager signInManager)
{
UserManager = userManager;
SignInManager = signInManager;
}
public ApplicationSignInManager SignInManager
{
get
{
return _signInManager ? HttpContext.GetOwinContext().Get<ApplicationSignInManager>()。
}
private set ?
{
_signInManager = value;
}
}
public ApplicationUserManager UserManager
{
get
{
return _userManager ? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>()。
}
private set ?
{
_userManager = value;
}
}
// GET: /帳戶/注冊
[HttpGet]
[AllowAnonymous]。
public ActionResult Register()
{
//return View();
return PartialView("_Register") 。
}
//
//POST: /賬戶/注冊
[HttpPost]
[AllowAnonymous]。
[ValidateAntiForgeryToken]
public async Task<ActionResult> Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
//RegisterViewModel rModel = model.RegisterViewModel;
var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false)。)
// 關于如何啟用賬戶確認和密碼重置的更多資訊,請訪問https://go.microsoft.com/fwlink/?LinkID=320771。
//用此鏈接發送電子郵件。
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, await) Id, "確認您的帳戶", "請通過點擊<a href="" callbackUrl "">here</a>")確認帳戶。)
RedirectToAction("Index", "Home", null)。
//return RedirectToAction("Index", "Home", new { area = "Landing" });
//return RedirectToAction("Index", "Home", new { id = UrlParameter.Optional, Area = "Ling" },
//new[] { "ReportingSystem.Areas.Landing.Controllers" });
}
AddErrors(result)。
}
//如果我們走到這一步,有什么東西失敗了,重新顯示表單。
// return View(model);
return PartialView("_Register", model)。
}
}
#endregion。
}
}
AccountViewModel.cs
using System.Collections.Generic。
using System.ComponentModel.DataAnnotations;
using RepotingSystem.Area.Landing.Models;
namespace RepotingSystem.Area.Landing.Models
{
public class LoginViewModel
{
[Required ]
[Display(Name = "Email")]
[電子郵件地址]
public string Email { get; set; }
[Required]。
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[Display(Name = "記得我嗎?")]
public bool RememberMe { get; set; }
}
public class RegisterViewModelRequired ]
[EmailAddress ]
[Display(Name = "Email")]
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; }
}
uj5u.com熱心網友回復:
這是因為@Url.Action("Register", "Account")實際上是在賬戶控制器中呼叫Register ActionResult,它回傳Register View。
如果你想使用注冊任務,你需要包括該函式的引數。要做到這一點,你需要提交表單。試著將注冊按鈕替換為:
< input type="submit" value="Register" class="btn btn-info" id="addressSearch" />
uj5u.com熱心網友回復:
我已經解決了這個問題。我在_Register.cshtml的部分頁面中嵌套了兩個表單。我已經洗掉了外層表單,這樣就解決了問題。我在下面的鏈接中遇到了同樣的問題,這幫助我解決了這個問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/319222.html
標籤:
