asp.net-mvc – ASP .Net MVC 3:子动作和重定向
发布时间:2020-09-05 14:11:01 所属栏目:asp.Net 来源:互联网
导读:我需要在主页上显示注册表和登录表. 如果在这两个表单上验证失败,我需要在主页上显示正确的错误. 但如果没有错误,则必须将用户重定向到安全的仪表板. 为此,我在主页上使用子操作,如下所示: @Html.Action(Register, Membership) 如果存在任何错误,它可以按预
我需要在主页上显示注册表和登录表. 如果在这两个表单上验证失败,我需要在主页上显示正确的错误. 但如果没有错误,则必须将用户重定向到安全的仪表板. 为此,我在主页上使用子操作,如下所示: @Html.Action("Register","Membership") 如果存在任何错误,它可以按预期完美地工作,因为它能够使用具有验证状态信息的适当模型重新呈现局部视图. 但是如果没有错误,当它尝试重定向时,它会抛出一个错误,指出: Child actions are not allowed to perform redirect actions. 有没有办法解决?我确信有一种方法可以在主页上放置注册和登录表单.很可能我不知道,因为我是ASP .Net MVC的新手. 你能指点我在正确的方向吗? 解决方法一种方法是使用ajax表单作为登录和注册位,而不是在提交有效时返回RedirectResult,返回一些json,其中一些客户端脚本将注意并用于执行重定向为了你.这是一个简化的例子. 控制器: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.ComponentModel.DataAnnotations; using MvcApplication12.Models; namespace MvcApplication12.Controllers { public class HomeController : Controller { public ActionResult Index() { return View(); } public ActionResult Register() { return PartialView(new UserDetails()); } [HttpPost] public ActionResult Register(UserDetails details) { if (ModelState.IsValid) { return Json(new {redirect = true,url = Url.Action("Index","Dashboard")}); } else { return PartialView(details); } } } } 主页’索引’视图: @{ ViewBag.Title = "Index"; } <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> <script type="text/javascript"> function checkForRedirect(data) { if (data.redirect && data.url) { location.href = data.url; } } </script> <p>Home page stuff.....</p> <div id="RegistrationArea"> @Html.Action("Register") </div> <p> Home page stuff.....</p> 注册表’注册’局部视图: @model MvcApplication12.Models.UserDetails <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> @using (Ajax.BeginForm(new AjaxOptions() { HttpMethod = "POST",Url = Url.Action("Register","Home"),OnSuccess = "checkForRedirect(data)",UpdateTargetId = "RegistrationArea",InsertionMode = InsertionMode.Replace })) { @Html.LabelFor(m => m.UserName) @Html.EditorFor(m => m.UserName) @Html.ValidationMessageFor(m => m.UserName) @Html.LabelFor(m => m.Password) @Html.EditorFor(m => m.Password) @Html.ValidationMessageFor(m => m.Password) <input type="submit" /> } (编辑:百色站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 如何将Controller上的Ajax reqest重定向到登录页
- asp.net-mvc – 在我的ASP.NET MVC网站中缓存不能正常工作?
- 使用ASP.NET Identity 2.0和MVC 5进行自定义单点登录
- asp.net-mvc – ASP.NET MVC忽略所有url结尾的“.html”
- asp.net-mvc – 有条件地在webgrid中显示图像 – mvc 3
- 从代码隐藏调用ASP.NET Web API
- asp.net-mvc – ControllerActionInvoker
- asp.net-mvc-3 – Url.Action没有给出预期的结果.不需要的路
- asp.net-mvc-routing – 在MVC 6控制器中使用urlhelper生成
- 如何从经典ASP输出Excel * .xls文件
推荐文章
站长推荐
- ASP.NET MVC学习教程之Razor语法
- asp.net-mvc – 如何将行的模型从Kendo Grid传递
- 在asp.net App_Code目录中使用Nemerle
- 实体框架 – 使用EF和WebAPI,如何返回一个ViewMo
- asp.net-mvc-3 – 方法“OrderBy”必须在方法“跳
- asp.net – MVC 3,(razor)加载部分与验证
- asp.net-mvc – ASP.NET MVC/C++#:可以使用Html
- 在asp.net中使用eval(“”)
- asp.net-mvc-3 – Telerik MVC网格,在运行时从集
- asp.net-mvc-4 – ASP.NET MVC 4通过ActionLink传
热点阅读