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,这样可以避免一些不

    必要的麻烦。

  • 相关阅读:
    Advanced Configuration Tricks
    Reviewing the Blog Module
    Editing and Deleting Data
    Making Use of Forms and Fieldsets
    Understanding the Router
    SQL Abstraction and Object Hydration
    Preparing for Different Databases
    Java学习理解路线图
    Openstack学习历程_1_视频
    CentOS安装Nginx负载
  • 原文地址:https://www.cnblogs.com/sjqq/p/7530623.html
Copyright © 2011-2022 走看看