asp.net-mvc – ASP .Net MVC 3:子动作和重定向
发布时间:2020-09-19 00:09:14  所属栏目: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-mvc – 使用没有ORM的ASP.NET MVC
 - asp.net – 地理位置网络服务建议
 - ASP.NET:将内容注入所有Response流
 - asp.net-mvc – 我需要有关HandleError的更多信息
 - asp.net-mvc – 属性似乎根本不起作用
 - asp.net-mvc – 使用Repository/Service Pattern和MVC时缓存
 - asp.net – 如何在页面加载时以“添加新”模式进行编程设置
 - asp.net-mvc – 在MVC4中绑定的正确方法
 - asp.net-mvc-3 – 如何在页面提交ASP.Net MVC时捕获哪个单选
 - asp.net – 基于函数式编程的UI
 
推荐文章
            站长推荐
            - asp.net-web-api – Web API / MVC 6中的安全JSO
 - asp.net-mvc – 在MVC Razor视图中使用@RenderBo
 - 如何在ASP.NET MVC中配置3个级别的URL?
 - asp.net-mvc – 为什么HttpContext.Current在asp
 - 在ASP.NET RadioButtonList ListItem上设置CSS类
 - asp.net实现文件下载的代码
 - asp.net-web-api – 在WebApi OData中为OData服务
 - asp.net – 如何使用JwtSecurityTokenHandler和J
 - 敏感词汇过滤DFA算法
 - 使用ASP.NET Web API 2.1配置依赖注入
 
热点阅读
            