This question is locked. New answers and comments are not allowed.
I have a window that I use for user log in. I have a submit button in the partial view that loads in the window. This posts back to the server to validate the login. If there is an error, I would like for it to come back to the window and show the error and let the user correct. However, the partial view is being loaded into the browser main window. I looked at this post - Window Loses Modal State Upon Validation Errors - but it suggests doing client-side validation. I can't do that here. Please let me know how to accomplish this. Thank so much for all of your help. My code follows:
Site.Master where the window is defined:
<%@ Master Language="VB" Inherits="System.Web.Mvc.ViewMasterPage" %> <%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /></title> <script src="<%= Url.Content("~/Scripts/jquery-1.4.3.min.js") %>" type="text/javascript"></script> <script src="<%= Url.Content("~/Scripts/jquery-ui-1.8.5.custom.min.js") %>" type="text/javascript"></script> <script src="<%= Url.Content("~/Scripts/ui.dropdownchecklist-1.2qa-min.js") %>" type="text/javascript"></script> <script src="<%= Url.Content("~/Scripts/jquery.json-2.2.js") %>" type="text/javascript"></script> </head> <body> <%= Html.Telerik().StyleSheetRegistrar() _ .DefaultGroup(Function(group) group.Add("telerik.common.min.css")) _ .DefaultGroup(Function(group) group.Add("Site.css")) _ .DefaultGroup(Function(group) group.Add("ui.dropdownchecklist.standalone.css")) _ .DefaultGroup(Function(group) group.Add("telerik.windows7.min.css")) _ .DefaultGroup(Function(group) group.Add("jquery.fastconfirm.css")) %> <form id="form1" runat="server"> <div id="container"> <asp:ContentPlaceHolder ID="MainContent" runat="server" /> <div id="footer"> Copyright 2010 Green Mountain Consulting, All Rights Reserved <img alt="mountains" src="<%= Url.Content("~/Content/Images/ClassicSiteIcon.png") %>" style="float:none"/> <a class="greenlink" href="">Privacy Policy</a> </div> <div> <% Html.Telerik().Window().Name("LogOnWindow") _ .LoadContentFrom("LogOn", "Account") _ .Buttons(Function(buttons) buttons.Refresh().Maximize().Close()) _ .Draggable(True) _ .Height(575) _ .Width(550) _ .Resizable() _ .Title("Log In") _ .Visible(False) _ .Render() %> </div> </div> <%= Html.Telerik.ScriptRegistrar().jQuery(False).DefaultGroup(Function(addGroup) addGroup.Add("telerik.common.min.js")) _ .DefaultGroup(Function(addGroup) addGroup.Add("telerik.combobox.min.js")) _ .DefaultGroup(Function(addGroup) addGroup.Add("telerik.list.min.js")) _ .DefaultGroup(Function(addGroup) addGroup.Add("telerik.treeview.min.js")) _ .DefaultGroup(Function(addGroup) addGroup.Add("telerik.grid.min.js")) _ .DefaultGroup(Function(addGroup) addGroup.Add("telerik.calendar.min.js")) _ .DefaultGroup(Function(addGroup) addGroup.Add("telerik.datepicker.min.js")) _ .DefaultGroup(Function(addGroup) addGroup.Add("jquery.cascadingDropDown.js")) _ .DefaultGroup(Function(addGroup) addGroup.Add("jquery.fastconfirm.js")) _ .DefaultGroup(Function(addGroup) addGroup.Add("jquery.cookie.js")) _ .OnDocumentReady("$('#login').bind('click', function openWindow(e){ $('#LogOnWindow').data('tWindow').center().open().refresh();})") %> </form> </body> </html> The logon.ascx
<%@ Control Language="VB" Inherits="System.Web.Mvc.ViewUserControl(Of GMC_Hub_and_Spoke.LogOnModel)" %> <script type="text/javascript" language="javascript"> $(document).ready( function () { $('input.focus').attr('value', ''); setTimeout(function () { $(".focus").focus(); }, 500); } ); </script> <% Using Html.BeginForm() %> <div id="publicpage"> <p><img alt="GMC Logo" src="<%= Url.Content("~/Content/Images/GMC-Logo-100-x-76.jpg") %>" /><span class="publiccontentheader" style="padding-left:15px">GMC Log In</span></p> <div id="loginmain"> <p class="homecontentheader">Log In</p> <div id="customerField"><p> <%: Html.LabelFor(Function(m) m.CompanyCode)%> <%: Html.TextBoxFor(Function(m) m.CompanyCode, New With {.class = "focus"})%> <%: Html.ValidationMessageFor(Function(m) m.CompanyCode)%> </p> </div> <p> <%: Html.LabelFor(Function(m) m.UserName) %> <%: Html.TextBoxFor(Function(m) m.UserName) %> <%: Html.ValidationMessageFor(Function(m) m.UserName) %> </p> <p> <%: Html.LabelFor(Function(m) m.Password) %> <%: Html.PasswordFor(Function(m) m.Password) %> <%: Html.ValidationMessageFor(Function(m) m.Password) %> </p> <p> <%: Html.CheckBoxFor(Function(m) m.RememberMe) %> <%: Html.LabelFor(Function(m) m.RememberMe) %> </p> <p> <input type="submit" value="Log On" /> <%: Html.ValidationSummary(True, "Login was unsuccessful. Please correct the errors and try again.")%> </p> </div> </div> <% End Using %> The controller code:
Public Function LogOn() As ActionResult Dim logOnModel As New LogOnModel logOnModel.carrierList = New List(Of SelectListItem) logOnModel.carrierList = DictionaryToSelectList(Session("carrierList")) Return PartialView(logOnModel) End Function <HttpPost()> _ Public Function LogOn(ByVal model As LogOnModel, ByVal returnUrl As String) As ActionResult If ModelState.IsValid Then Dim userInfo As New PersistentUserInfo Dim companyCodeToUse As Integer Dim membershipService As New GMCMembershipProvider If model.CustCarrierFlag Then companyCodeToUse = model.CarrierCode Else companyCodeToUse = model.CompanyCode End If model.carrierList = New List(Of SelectListItem) model.carrierList = DictionaryToSelectList(Session("carrierList")) If membershipService.ValidateUser(companyCodeToUse, model.CustCarrierFlag, model.UserName, model.Password, userInfo) Then FormsService.SignIn(model.UserName, model.RememberMe) Session("GMCUserInfo") = userInfo If Not String.IsNullOrEmpty(returnUrl) Then Return Redirect(returnUrl) Else Return RedirectToAction("Index", "Home") End If Else ModelState.AddModelError("", "The user name or password provided is incorrect.") End If End If ' If we got this far, something failed, redisplay form Return PartialView(model) End Function