星空网 > 软件开发 > ASP.net

一个ActionResult中定位到两个视图团委项目

     在使用MVC做项目的时候一般的情况就是一个ActionResult一个视图,这样对应的Return View();就可以找到下面对应的视图,这是根据一个原则,“约定大于配置”,但是我们有的时候需要在一个ActionResult中根据业务跳转到不同的视图,展示到界面上。

这里也不一定绝对要跳转到对于的视图,我们可以通过Return RedirectToAction()来跳转到对于的视图,如下

    public ActionResult Detail(Guid id)    {      try      {        var entity = _articleService.GetById(id);        if (entity!=null)        {                   var model = Mapper.Map<ArticleDetail>(entity);          return View(model);        }        return RedirectToAction("Index");      }      catch (Exception ex)      {                throw new Exception(ex.Message);      }          }

 

这个是我们判断为空的时候跳转到首页的列表页面。我们也可以在(“Index”,”Controller”)添加对应的控制器,这样就可以在项目中随便的进行跳转。

下面我们看下如何跳转到两个视图中。

需求:这里的项目分为两类,本可以将项目的详情写成一个,但是由于项目的内容不一样,我们需要通过两个视图来展示,本来可以新建两个action来解决,但是由于很多的代码是一样的,再三思考下,在一个action中根据不同的类型跳转到了不同的视图进行展示。

代码:

    /// <summary>    /// 项目详情    /// </summary>    /// <returns></returns>    public ActionResult ProjectDetails(Guid id)    {              try        {          var project = _projectService.GetById(id);          if (project.ProjectType ==ProjectType.大学生三创项目)          {            var model = new InnovateProjectDetialView();            var entity = _innovateAndOriginalityProjectService.GetById(id);            model=Mapper.Map(entity, model);            return View("InnovateProjectDetails", model);          }           else          {            var model = new AfterSchoolProjectDetialView();            var entity = _afterSchoolProjectService.GetById(id);            model=Mapper.Map(entity, model);            return View("AfterSchoolProjectDetails", model);            }                 }        catch (Exception ex)        {          throw new Exception(ex.Message);        }    }
解释:通过在前面Index列表中点击项目的详情,我们可以得到不同的ID,根据ID取到项目,接着通过项目的分类我们将其分开,这样就可以各自返回到自己的视图,这里我们需要添加模型过去,应为我们两个页面里面的模型是不一样的。
 return View("InnovateProjectDetails", model);

这里没有将模型写在actionresult的参数里面,是因为我们两个类型的模型是不一样的需要各自进行实例化,接着进行PO—>VO的转换(这里是使用的autoMapper来进行的,为了实现高内聚低耦合,<还在研究中>)

下面是各自需要引用的代码,因为我们从视图中返回的就是这个模型。

@model Ylxy.Twdc.Models.InnovateProjectDetialView
@model Ylxy.Twdc.Models.AfterSchoolProjectDetialView

这样就可以实现效果了。

截图如下。

一个ActionResult中定位到两个视图团委项目

一个ActionResult中定位到两个视图团委项目一个ActionResult中定位到两个视图团委项目

大致的效果就是这个样子。

我要制定详细的计划,学习了。




原标题:一个ActionResult中定位到两个视图团委项目

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

添奕物流:https://www.goluckyvip.com/tag/42466.html
田洪波:https://www.goluckyvip.com/tag/42467.html
田润国际物流:https://www.goluckyvip.com/tag/42468.html
田思蒙:https://www.goluckyvip.com/tag/42469.html
ARA数据:https://www.goluckyvip.com/tag/4247.html
甜狗SweetDog:https://www.goluckyvip.com/tag/42470.html
17万件月销量!Wildplus Beauty香薰身体精华油大热趋势 :https://www.kjdsnews.com/a/1836305.html
17万件月销量!Wildplus Beauty香薰身体精华油大热趋势 :https://www.goluckyvip.com/news/186214.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流