我已經啓動了一個MVC項目,併爲我創建了AccountController類。 所以要登錄到我目前的網站,我將不得不去localhost:2500 \ Account.mvc \ LogOnMVC調用另一個控制器動作
我想在我的HomeController在索引視圖進行登錄。所以基本上如果你去我的網站的根,如果不認證,你將不得不登錄去其他地方。
所以我做的是將表單添加到我的索引視圖中,並試圖將它發佈到我的 調用LogOn操作的帳戶視圖。
我已經調用了BeginForm方法,將它傳遞給我的動作和相應的視圖(LogOn,Account)。當我點擊按鈕時,它不會發布到帳戶視圖,因此不執行LogOn操作。相反,它只是發佈到主視圖再次調用索引操作。所以它對我來說真的沒有用處......哈哈。
不知道我在做什麼錯。下面是我的Home/Index.aspx中的原始表單代碼,然後我將在點擊登錄按鈕之前呈現它的呈現源代碼。
下面是從首頁/的Index.aspx我的代碼:
<% 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>
<% } %>
查看Home.mvc /索引來源:
<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源代碼中的操作設置正確,我只是不明白爲什麼它不正確發佈。我沒有做正確的事。如果您有任何想法,請告訴我。謝謝!
LogOn支持行動的帳戶查看:
[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");
}
}
您是否在嘗試開始時不嘗試使用斜線? – 2009-09-22 19:20:49
@mrinject如果MVC已經使用斜線渲染了路線,那麼你期望它是正確的嗎? – 2009-09-22 19:25:25
是的,MVC已經在這裏呈現了這個html,因爲我使用了帶參數的BeginForm()... – Gabe 2009-09-22 19:26:15