MVC5 응용 프로그램을 함께 사용하면 사용자가 고객 또는 영업 사원으로 등록하게됩니다. 로그인 세부 정보는 생성 된 동일한 기본 [AspNetUsers] 테이블에 들어갈 수 있지만 그들이 소매인 인 경우 추가 세부 정보를 수집해야합니다. 내가 만들고있는 애플리케이션과 함께 제공되는 코드 중 일부를 살펴보면 다음에해야 할 작업이나 사용하는 방법이 올바르지 만 다소 혼란 스럽습니다. . 내가 등록 정보가 채워지에 따라 중 하나 세트를 수집하는 것을 목표로하고 있습니다MVC5 응용 프로그램에 등록하는 동안 추가 정보 얻기
내 계정/컨트롤러를 등록하는 것은 다음과 같이 시작된다
그래서 것 내 질문에 내가 '무엇[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Register(RegisterViewModel model)
{
using (var context = new ApplicationDbContext())
{
if (ModelState.IsValid)
{
var user = new ApplicationUser
{
FirstName = model.FirstName,
LastName = model.LastName,
UserName = model.Email,
Email = model.Email
};
var result = await UserManager.CreateAsync(user, model.Password);
var roleStore = new RoleStore<IdentityRole>(context);
var roleManager = new RoleManager<IdentityRole>(roleStore);
var userStore = new UserStore<ApplicationUser>(context);
var userManager = new UserManager<ApplicationUser>(userStore);
if (result.Succeeded)
{
if (model.CompanyName.Trim().Length > 0)
{
var company = new CompanyModel
{
CompanyName = model.CompanyName,
AddressLine1 = model.AddressLine1,
AddressLine2 = model.AddressLine2,
Town = model.Town,
County = model.County,
Postcode = model.Postcode,
TelNo = model.TelNo,
MobNo = model.MobNo,
GoogleVerified = model.GoogleVerified,
FacebookProfileUrl = model.FacebookProfileUrl
};
//insert company details?
}
await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: 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");
}
AddErrors(result);
}
// If we got this far, something failed, redisplay form
return View(model);
}
}
올바른 일을하는 것/좋은 일을하는 것, 같은 컨트롤러를 통해 두 가지 유형의 사용자에 대한 세부 정보를 수집 할 수 있습니까?
Register.cshtml 페이지에서 jquery 아코디언이 있는데, 클라이언트라는 개념은 하나의 섹션을 채우고 가입하거나 아코디언을 클릭하면 다른 섹션을 채울 수 있습니다. 그런 다음 내가 겪는 문제 나는 한 번 코드 줄 사용하고있다 : 나는이 컨트롤이 의미하는
@using (Html.BeginForm("Register", "Account", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{
다음이 내부의 아코디언 컨트롤을 앉아
@Html.LabelFor(m => m.FirstName, new { @class = "col-md-2 control-label" })
두 번, 한 번 사용자와 한 번은 소매인에게 허용됩니까?
네, 할 수 있습니다. 나는 당신이'FirstName'을위한 2 개의 텍스트 박스를 가지고 있다는 것을 의미한다고 생각하십니까? 첫 번째 요소 만 바인딩되므로 무의미합니다. 왜 사용자에게 동일한 데이터를 반복하도록 요청할 것입니까? –
아코디언은 두 부분으로 나뉘어져 있으며 두 부분으로 구성되어 있고 두 부분에는 버튼이 있습니다.아이디어는 아코디언 중 하나에 '고객으로 등록'이라고 말하면서 성, 성, 이메일 등을 기입하고 소매업 자로 등록하려면 하단 아코디언을 클릭하고 수집 할 동일한 세부 사항을 firstname, 성, 이메일뿐만 아니라 다른 정보 (위와 같음). 하나의 이름 컨트롤과 하나의 성 컨트롤 만 가질 수 있습니까? 아니면 어떻게 든 FormMethod.Post 파트 중 두 개를 사용하고 제출 된 양식에 따라 다른 양식을 보낼 수 있습니까? 감사합니다 –
당신은 하나의 뷰 모델과 하나의 폼과 하나의 포스트 메소드를 가져야합니다 (뷰 모델에는 선택된 옵션에 기반한'[RequiredIf]'속성이 필요합니다 .post 메소드에서, 당신은 선택된 옵션의 값을 검사 할 수 있습니다. '상인'이라면 다른 테이블에 추가 세부 정보를 저장하십시오. –