首页 新闻 赞助 找找看

asp.net mvc 中view的实现

0
[已解决问题] 解决于 2015-09-08 09:15

public ActionResult JobHistory()
{
return View();
}
/// <summary>
/// 监督报告
/// </summary>
/// <returns></returns>
public ActionResult IndexReport()
{
return View();
}
/// <summary>
/// 项目科室设置
/// </summary>
/// <returns></returns>
public ActionResult DepartSet()
{
return View();
}
/// <summary>
/// 项目科室设置
/// </summary>
/// <returns></returns>
public ActionResult UserSet()
{
return View();
}
/// <summary>
///
/// </summary>
/// <returns></returns>
public ActionResult FormJob()
{
return View();
}
/// <summary>
///
/// </summary>
/// <returns></returns>
public ActionResult Jcfbysdj()
{
return View();
}
/// <summary>
///
/// </summary>
/// <returns></returns>
public ActionResult Jcztysdj()
{
return View();
}

现在Controller中很多都是这样的ActionResult,完全是为了返回view,我想问下能不能实现当访问像上面的这些view的时候默认返回到与之名字相同的view而不用在Controller里面再写一遍了,当有需要的时候再去override

汉卿的主页 汉卿 | 菜鸟二级 | 园豆:222
提问于:2015-08-31 09:31
< >
分享
最佳答案
0

 楼上就可以啊,你不用在每个 view 后面加个 pagename 参数,写个 base 的 action ,不需要逻辑代码执行的直接返回 pagename 参数的 view 就行了啊

奖励园豆:5
meclus | 菜鸟二级 |园豆:220 | 2015-08-31 14:34

比如说我要返回Good这个view ,我在cshtml页面中就得写成Good?pagename=Good的啊,

不是吗?

汉卿 | 园豆:222 (菜鸟二级) | 2015-08-31 15:37

@汉卿: 跟楼上的代码一样,可以实现,参考下

action方法为

public ActionResult Index(string pagename)
{
  return View(pagename);
}

下面为请求路径

/Testy/Index?pagename=One

/Testy/Index?pagename=Two

meclus | 园豆:220 (菜鸟二级) | 2015-08-31 16:00

@meclus: 嗯,我想实现的是如果要找View在Controller 没有定义,则自动跳到与之同名的View上去,相当于说我原来要跳到Good这个View就得写这个public ActonResult Good()

{
return View();

}

我想实现的是我不写这个代码,然后自动跳到Good这个View

汉卿 | 园豆:222 (菜鸟二级) | 2015-08-31 16:40

@汉卿: 去重写路由

public override void OnActionExecuting(ActionExecutingContext filterContext)
{

  //your bussiness layer...

}

meclus | 园豆:220 (菜鸟二级) | 2015-08-31 17:04
其他回答(4)
0

可以通过路由实现,并不复杂。但这样话,怎么判断哪些view是可以直接返回的那些事不可以的?

需要逻辑的view怎么处理才是需要考虑的

吴瑞祥 | 园豆:29449 (高人七级) | 2015-08-31 09:38

我的理想状态是如果在Controller中找不到对应的public ActionResult Jcfbysdj()
{
return View();
}

则默认指向与之同名的View,如果存在就按相对应的View来返回,

支持(0) 反对(0) 汉卿 | 园豆:222 (菜鸟二级) | 2015-08-31 10:06

@汉卿: 这个是占不住脚的。

1.view是一定要在action里返回的,所以你就一定需要一个action,

2.找不到对应的action的时候就是404了。你这个想法是自己拦截404异常,然后自己写一套路由解析?

3.你太想当然了。2L的方法对你这个需求来说是比较靠谱的

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2015-08-31 11:03

@吴瑞祥: 你在实际开发中没碰到到这个问题吗?稍微复杂点的功能,Controller的view就一大堆了,

支持(0) 反对(0) 汉卿 | 园豆:222 (菜鸟二级) | 2015-09-01 09:01
0

写个方法,传递需要返回的视图名称,然后直接返回对应视图。

晓菜鸟 | 园豆:2594 (老鸟四级) | 2015-08-31 09:43
0

可以啊 return View 里面没参数就默认返回的和方法名一样的页面,只需要 return View(pagename);就返回名字叫pagename的页面

伤心懒睡猪 | 园豆:346 (菜鸟二级) | 2015-08-31 10:28

我的意思是return View(pagename)这个不用写,我上面贴的这些代码都是/// <summary>
/// 
/// </summary>
/// <returns></returns>
public ActionResult Jcztysdj()
{
return View();
}

你说的这种情况

支持(0) 反对(0) 汉卿 | 园豆:222 (菜鸟二级) | 2015-08-31 10:30

@汉卿: 你从页面上传个值过来,通过值给pagename 赋值就可以了呀,这样的话就只需要写一个~

支持(0) 反对(0) 伤心懒睡猪 | 园豆:346 (菜鸟二级) | 2015-08-31 10:35

@伤心懒睡猪: 可否贴下代码,不是很懂你的意思,刚用mvc

支持(0) 反对(0) 汉卿 | 园豆:222 (菜鸟二级) | 2015-08-31 10:37

@汉卿: 

public ActionResult Jcztysdj(string pagename)
{

//pagename就是页面通过传值传过来的
 return View(pagename);
}

支持(0) 反对(0) 伤心懒睡猪 | 园豆:346 (菜鸟二级) | 2015-08-31 11:08

@伤心懒睡猪: 嗯,知道你的意思了,跟我的想法有点差别,我的想法是通过配置或者代码把你上面的代码也省了,因为他们的pagename 跟viewname是一样的。

支持(0) 反对(0) 汉卿 | 园豆:222 (菜鸟二级) | 2015-08-31 11:30
1

很简单啊

public ActionResult Page(string pagename)
{

   return View(pagename);

}

艾尼路 | 园豆:116 (初学一级) | 2015-08-31 11:30

你的意思就是在每个view后面加个pagename参数是吧,嗯,知道你的意思了,跟我的想法有点差别,我的想法是通过配置或者代码把你上面的代码也省了,因为他们的pagename 跟viewname是一样的。

支持(0) 反对(0) 汉卿 | 园豆:222 (菜鸟二级) | 2015-08-31 13:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册