一个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中定位到两个视图—<团委项目>
在使用MVC做项目的时候一般的情况就是一个ActionResult一个视图,这样对应的Return View();就可以找到下面对应的视图,这是根据一个原则,"约定大于配置&quo ...
- [转载]android工程中引入另一个工程中的资源
原文地址:android工程中引入另一个工程中的资源作者:87fayuan 在项目中可能遇到这样的问题:项目过大,于是细分为N个子模块来做,每个模块都是不同的工程.涉及到activity传数据时,可以 ...
- MVVM Light 一个窗口承载两个视图
MVVM Light 一个窗口承载两个视图 原文地址:http://www.codeproject.com/Articles/323187/MVVMLight-Using-Two-Views 本文 ...
- sql一个表中两个字段合并求和
sql一个表中两个字段,合并求和 SELECT SUM(字段a+'.'+字段b) as total from TABLE
- ORACLE 查询一个数据表后通过遍历再插入另一个表中的两种写法
ORACLE 查询一个数据表后通过遍历再插入另一个表中的两种写法 语法 第一种: 通过使用Oracle语句块 --指定文档所有部门都能查看 declare cursor TABLE_DEPT and ...
- 【leetcode】Merge Sorted Array(合并两个有序数组到其中一个数组中)
题目: Given two sorted integer arrays A and B, merge B into A as one sorted array. Note: You may assum ...
- JS 从一个字符串中截取两个字符串之间的字符串
/************************************************* 函数说明:从一个字符串中截取 两个字符串之间的字符串 参数说明:src_str 原串, start ...
- 从一个子视图或者一个View中刷新其他UITableView
被问到了一个问题:如何从一个子视图或者一个View中刷新其他UITableView,常规的写法可能是这样的 TestTVC*testTVC =[[TestTVC alloc] init];[testT ...
- C语言:一个数组中只有两个数字是出现一次
//1.一个数组中只有两个数字是出现一次, //其他所有数字都出现了两次. //找出这两个数字,编程实现.a //^=单独两个数的^结果 //单独出现的两个数不同位的标记 //position: ^结 ...
随机推荐
- 快速莫比乌斯变换(FMT)
快速莫比乌斯变换(FMT) 原文出处:虞大的博客.此仅作蒟蒻本人复习用~ 给定两个长度为n的序列 \(a_0, a_1, \cdots, a_{n-1}\)和\(b_0, b_1, \cdots, b ...
- 模板 Trie树
模板 Trie树 code: #include <iostream> #include <cstdio> using namespace std; const int wx=2 ...
- php 过滤重复的数组
首先数组分为一维数组和多维数组 1.一维数组 $a = array(a,b,c,d,a,b,e,f,g); array_unique($a) 就行了 2.二维数组 $a = array( array( ...
- 快速找出故障机器(single number)
简单起见,假设每个机器存储一个标号为ID的记录(ID是小于十亿的整数),假设每份数据都保存两个备份,这样就有两个机器储存了同样的数据. 1.在某个时间,如果得到一个数据文件ID的列表,是否能够快速地找 ...
- EM最大期望算法
[简介] em算法,指的是最大期望算法(Expectation Maximization Algorithm,又译期望最大化算法),是一种迭代算法,在统计学中被用于寻找,依赖于不可观察的隐性变量的概率 ...
- B. Sereja and Suffixes
B. Sereja and Suffixes time limit per test 1 second memory limit per test 256 megabytes input standa ...
- fiddler抓包出现错误 creation of the root certificate was not successful
fiddler安装完要配置才可以抓取HTTP 1.首先 找到Tools——>Options,在弹出的菜单中 选择https项 勾选捕捉https,这样配置完OK之后 一般会弹窗提示安装证书,点击 ...
- Ansible自动化运维工具
ansible软件介绍 python语言是运维人员必会的语言! ansible是一个基于Python开发的自动化运维工具!(saltstack) 其功能实现基于SSH远程连接服务! ans ...
- Java StringBuffer
String是不变类,用String修改字符串会新建一个String对象,如果频繁的修改,将会产生很多的String对象,开销很大.因此java提供了一个StringBuffer类,这个类在修改字符串 ...
- 读书笔记 - 《黑旗 ISIS的崛起》
不愧是普利策奖的书籍,读起来让人欲罢不能,花了大约四个晚上把此书一气读完.这本书讲述的是“伊斯兰国”ISIS及其前身组织历史,也就是阿布·穆萨卡·扎卡维及其追随者的故事.虽然不是小说,但故事的精彩以及 ...


