zoukankan      html  css  js  c++  java
  • PartialView中的页面重定向

    在MVC的每个action中,都可以指定一种返回页面的类型,可以是ActionResult,这表示返回的页面为view或者是一个PartialView,前台是一个全整页面,后台是页面的一部分。

    在以ASPX为页面引擎时,PartialView被称为分部视图,扩展名为ASCX,与webform中的用户控件是一样的,即页面中的一个部分;而使用razor为页面引擎时,PartialView扩展名还是cshtml,这一点感觉与普通页面有些混乱。不过,这不是今天我要讲的重点,今天的重点间在partialview中进行页面重定向的方式。

    第一种情况:在PartialView中进行表单提示操作后,需要返回别一个PartialView来填充原来的这个PartialView的内容

    这种情况需要我们的action返回值类型必须是PartialViewResult,返回代码必须是PartialView

    代码如下:

    复制代码
     1        public PartialViewResult ApplyRegister(User_Register_ApplyModel entity)
     2         {
     3             User_Register_Apply user_Register_Apply = new User_Register_Apply();
     4             TryUpdateModel(user_Register_Apply);
     5             if (ModelState.IsValid)
     6             {
     7                 user_Register_Apply.UserID = VCommons.Utils.GetNewGuid();
     8                 VM = user_InfoManager.ApplyRegister(user_Register_Apply);
     9                 if (!VM.IsComplete)
    10                 {
    11                     VM.ToList().ForEach(i => ModelState.AddModelError("", i));
    12                 }
    13                 else
    14                     return PartialView("ApplySuccess", entity.Email);//返回到指定的PartialView,它将替换ApplyRegister这个视图内容
    15             }
    16             return PartialView();
    17         }
    复制代码

    第二种情况,在PartialView视图中提交表单,然后使整个页面进行一个跳转,需要注意的是不能用response.redirect,而必须用JS的location.href,前者会在本partial位置进行跳换。

    代码如下:

    复制代码
     1      public PartialViewResult UserLogOn(UserLogOnModel entity)
     2         {
     3             if (ModelState.IsValid)
     4             {
     5                 if (LogOn(new User_Info { Email = entity.Email, Password = entity.Password }).IsComplete)
     6                 {
     7                     Response.Write("<script>location.href='home/index';</script>");//在ascx中跳到指定页,需要用JS方法
     8                 }
     9             }
    10             return PartialView();
    11         }
    复制代码


    第三种情况,也是最简单的一种情况,在partialview中只是一个链接,没有提交动作,只是将partialview的部分进行重定向,这里代码使用response.redirect()即可

    代码如下:

    复制代码
     1   public PartialViewResult UserLogOn(UserLogOnModel entity)
     2         {
     3             if (ModelState.IsValid)
     4             {
     5                 if (LogOn(new User_Info { Email = entity.Email, Password = entity.Password }).IsComplete)
     6                 {
     7                      Response.Redirect("/home/index");
     8                 }
     9             }
    10             return PartialView();
    11         }
    复制代码

    个人建议,对于partialview的action,如果只是返回视图,而不是返回json和其它格式的对象,最好使用PartialViewResult 进行返回,而不要使用ActionResult,这样可以避免一些不

    必要的麻烦。

    爱上MVC3目录

    爱上MVC3系列~Razor模板页

    爱上MVC3系列~全局异常处理与异常日志

    爱上MVC3系列~使用视图模型的好处及与数据模型之间的赋值问题

    爱上MVC3系列~RenderAction与RenderPartial及一个页面多个表单提交

    爱上MVC3系列~Html.BeginForm与Ajax.BeginForm

    爱上MVC3系列~PartialView中的页面重定向

     
    分类: .NET MVC
  • 相关阅读:
    用户自定义控件
    sql 动态行转列
    sql 将表B中不存在表A的数据 插入到表A中
    C#获取键盘和鼠标操作的时间的类
    滚动条加粗和panel,gridControl结合用
    第三项任务——用例建模
    第二项任务——项目需求分析
    第一项任务:团队组建及项目启动
    实验报告(结对项目)
    实验报告(个人项目)
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2567401.html
Copyright © 2011-2022 走看看