0
我在Asp.net MVC 2.0中遇到嵌套主頁面的問題。MVC嵌套主頁面和呈現Ajax格式的呈現部分
當使用正常的主(不嵌套 - 低於default.master)時,登錄功能正常工作。
使用嵌套的主,ajax表單帖子導致UpdateTarget div內的default.master的整頁呈現。因爲在這種情況下,所提到的主人是twocolumn.master,這是沒有意義的。
任何想法或建議嗎?
設置&代碼:
default.master:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>
<asp:ContentPlaceHolder ID="TitleTagContent" runat="server" />
</title>
<!--script includes -->
</head>
<body>
<div id="main">
<div id="header">
<div id="brand">
<a href="#">
<img src="/content/site_images/lgo_justProud.gif" width="264" height="62" alt="Just Proud" /></a></div>
<div id="logMenu" class="noPrint">
<asp:ContentPlaceHolder ID="LoginContentArea" runat="server">
<div id="login">
<%if (SessionHelper.LoggedInUser == null)
{
Html.RenderPartial("UserNamePasswordLogin", null);
}
else
{
Html.RenderPartial("UserLoginStatus", null);
}; %>
</div>
</asp:ContentPlaceHolder>
<asp:ContentPlaceHolder ID="Content_MainZone" runat="server">
</asp:ContentPlaceHolder>
</div>
</div>
</body>
</html>
TwoColumn.master:
<asp:Content ID="Content1" ContentPlaceHolderID="Content_MainZone" runat="server">
<div class="bodyTop">
</div>
<div class="headerSmall">
<h1>
<asp:ContentPlaceHolder ID="Content_SubTitle" runat="server">
</asp:ContentPlaceHolder>
</h1>
</div>
<div class="twoColumns">
<div class="contentLeft">
<asp:ContentPlaceHolder ID="Content_MainLeft" runat="server">
</asp:ContentPlaceHolder>
</div>
<div class="contentRight">
<asp:ContentPlaceHolder ID="Content_MainRight" runat="server">
</asp:ContentPlaceHolder>
</div>
<div class="clearfloats" />
</div>
</asp:Content>
<asp:Content ContentPlaceHolderID="HeadTagContent" ID="Content2" runat="server">
<asp:ContentPlaceHolder ID="HeadTagContent" runat="server">
</asp:ContentPlaceHolder>
</asp:Content>
<asp:Content ContentPlaceHolderID="TitleTagContent" ID="Content3" runat="server">
<asp:ContentPlaceHolder ID="TitleTagContent" runat="server">
</asp:ContentPlaceHolder>
</asp:Content>
UserNamePasswordLogin.ascx:
<div class="notLoggedIn">
<%using (Ajax.BeginForm("Login", "Authentication", new AjaxOptions() { UpdateTargetId = "login" }))
{ %>
<%=Html.ValidationSummary()%>
<table cellpadding="0" cellspacing="0">
<tr>
<td class="username" colspan="2">
<%--<input name="username" type="text" value="username" size="12" />--%>
<%=Html.TextBox("username", null, new { size = "12" })%>
<%=Html.ValidationMessage("username", "*")%>
</td>
<td class="password">
<%--<input name="password" type="text" value="Password" size="12" />--%>
<%=Html.Password("password", null, new { size = "12" })%>
<%=Html.ValidationMessage("password", "*")%>
</td>
<td>
<%=Html.Hidden("returnUrl", Request.RawUrl)%>
<%-- <input type="button" value="Go" />--%>
<input type="submit" value="Login" />
</td>
</tr>
<tr>
<td>
<div class="checkbox">
<input name="rememberMe" type="checkbox" value="true" />
</div>
</td>
<td class="usernameTxt" align="left" width="90">
<span class="txt">
<%=GlobalizationProperties.Labels.RememberMe%></span>
</td>
<td class="passwordTxt">
<span class="txt"><a href="#">Forgot your pasword</a></span>
</td>
</tr>
</table>
<%};%>
登錄操作:
[HttpPost]
public ActionResult Login(string username, string password, bool? rememberMe, string returnUrl)
{
LoginDTO dto = new LoginDTO() { Login = username, Password = password, RememberMe = rememberMe };
// Basic parameter validation
if (String.IsNullOrEmpty(username))
{
ViewData.ModelState.AddModelError("username", GlobalizationProperties.ErrorMessages.LoginRequired);
}
if (String.IsNullOrEmpty(password))
{
ViewData.ModelState.AddModelError("password", GlobalizationProperties.ErrorMessages.PasswordRequired);
}
if (ViewData.ModelState.IsValid)
{
bool loginSuccess = LoginHelper.PerformLogin(dto);
if (loginSuccess)
{
return JavaScript(string.Format("document.location.replace('{0}');", HttpUtility.HtmlEncode(returnUrl)));;
}
else
{
ViewData.ModelState.AddModelError("username", GlobalizationProperties.ErrorMessages.LoginPassNotFound);
}
}
ViewData["LoginForm"] = "LoginForm";
return PartialView("UserNamePasswordLogin");
}
問候,巴特
使用jQuery是它的一個AJAX母版頁或常規母版頁是固定嗎? – 2010-01-27 15:46:28
Hi Nick, 定期主頁面:Inherits =「System.Web.Mvc.ViewMasterPage」 – BGR 2010-01-27 19:27:19