MVC 프로젝트를 시작했고 나를 위해 AccountController 클래스를 만들었습니다. 그래서 현재 사이트에 로그인하려면 localhost : 2500 \ Account.mvc \ LogOn을 입력하십시오.MVC 다른 컨트롤러 호출 액션
색인보기에서 HomeController에 로그인을하고 싶습니다. 그래서 기본적으로 당신이 사이트의 루트에 가서 인증되지 않으면 다른 곳으로 가기 위해 로그인해야합니다.
그래서 내가 한 것은 내 인덱스보기에 양식을 추가하고 내 LogOn 작업을 호출하는 계정보기에 게시하려고했습니다.
나는 BeginForm 메서드를 호출하여 액션과 해당 뷰 (LogOn, Account)를 전달했다. 버튼을 클릭하면 계정보기에 게시되지 않으므로 LogOn 작업이 실행되지 않습니다. 대신, 인덱스 동작을 다시 호출하는 홈 뷰에 게시됩니다. 그래서 그것은 나를 위해 정말로 아무것도하지 않는다. .. 하하.
내가 잘못하고 있는지 확실하지 않습니다. 아래는 Home/Index.aspx의 원시 형식 코드이며, 렌더링 된 후에는 로그온 버튼을 누르기 전에 소스를 보여줄 것입니다. Home.mvc/인덱스의
<% using (Html.BeginForm("LogOn", "Account")) { %>
<div>
<fieldset>
<legend>Account Information</legend>
<p>
<label for="username">Username:</label>
<%= Html.TextBox("username") %>
<%= Html.ValidationMessage("username") %>
</p>
<p>
<label for="password">Password:</label>
<%= Html.Password("password") %>
<%= Html.ValidationMessage("password") %>
</p>
<p>
<%= Html.CheckBox("rememberMe") %> <label class="inline" for="rememberMe">Remember me?</label>
</p>
<p>
<input type="submit" value="Log On" />
</p>
</fieldset>
</div>
<% } %>
소스보기 :
는 여기에 홈/Index.aspx에서 내 코드의 내 로그온 행동에 브레이크 포인트를 설정하고 가져 결코
<form action="/Account.mvc/LogOn" method="post">
<div>
<fieldset>
<legend>Account Information</legend>
<p>
<label for="username">Username:</label>
<input id="username" name="username" type="text" value="" />
</p>
<p>
<label for="password">Password:</label>
<input id="password" name="password" type="password" />
</p>
<p>
<input id="rememberMe" name="rememberMe" type="checkbox" value="true" /><input name="rememberMe" type="hidden" value="false" /> <label class="inline" for="rememberMe">Remember me?</label>
</p>
<p>
<input type="submit" value="Log On" />
</p>
</fieldset>
</div>
</form>
조회수가 너무 많아서 로그인 오류가 발생하지 않습니다.
html 소스의 작업이 올바르게 설정되어있는 것처럼 보입니다. 올바르게 게시되지 않는 이유를 모르겠습니다. 나는 옳은 일을하지 않을거야. 아이디어가 있으면 알려주십시오. 감사! 계정보기
로그온 조치 :
[AcceptVerbs(HttpVerbs.Post)]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1054:UriParametersShouldNotBeStrings",
Justification = "Needs to take same parameter type as Controller.Redirect()")]
public virtual ActionResult LogOn(string userName, string password, bool rememberMe, string returnUrl)
{
if (!ValidateLogOn(userName, password))
{
return View();
}
FormsAuth.SignIn(userName, rememberMe);
if (!String.IsNullOrEmpty(returnUrl))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Index", "Home");
}
}
조치를 시작했을 때 슬래시를 사용하지 않았습니까? –
@mrinject MVC가 슬래시를 사용하여 경로를 렌더링 한 경우 반드시 올바른 것으로 기대하십니까? –
BegamForm() with params를 사용하고 있기 때문에 Yea MVC가이 HTML을 렌더링했습니다 ... – Gabe