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
楼上就可以啊,你不用在每个 view 后面加个 pagename 参数,写个 base 的 action ,不需要逻辑代码执行的直接返回 pagename 参数的 view 就行了啊
比如说我要返回Good这个view ,我在cshtml页面中就得写成Good?pagename=Good的啊,
不是吗?
@汉卿: 跟楼上的代码一样,可以实现,参考下
action方法为
public ActionResult Index(string pagename)
{
return View(pagename);
}
下面为请求路径
/Testy/Index?pagename=One
/Testy/Index?pagename=Two
@meclus: 嗯,我想实现的是如果要找View在Controller 没有定义,则自动跳到与之同名的View上去,相当于说我原来要跳到Good这个View就得写这个public ActonResult Good()
{
return View();
}
我想实现的是我不写这个代码,然后自动跳到Good这个View
@汉卿: 去重写路由
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
//your bussiness layer...
}
可以通过路由实现,并不复杂。但这样话,怎么判断哪些view是可以直接返回的那些事不可以的?
需要逻辑的view怎么处理才是需要考虑的
我的理想状态是如果在Controller中找不到对应的public ActionResult Jcfbysdj()
{
return View();
}
则默认指向与之同名的View,如果存在就按相对应的View来返回,
@汉卿: 这个是占不住脚的。
1.view是一定要在action里返回的,所以你就一定需要一个action,
2.找不到对应的action的时候就是404了。你这个想法是自己拦截404异常,然后自己写一套路由解析?
3.你太想当然了。2L的方法对你这个需求来说是比较靠谱的
@吴瑞祥: 你在实际开发中没碰到到这个问题吗?稍微复杂点的功能,Controller的view就一大堆了,
写个方法,传递需要返回的视图名称,然后直接返回对应视图。
可以啊 return View 里面没参数就默认返回的和方法名一样的页面,只需要 return View(pagename);就返回名字叫pagename的页面
我的意思是return View(pagename)这个不用写,我上面贴的这些代码都是/// <summary>
///
/// </summary>
/// <returns></returns>
public ActionResult Jcztysdj()
{
return View();
}
你说的这种情况
@汉卿: 你从页面上传个值过来,通过值给pagename 赋值就可以了呀,这样的话就只需要写一个~
@伤心懒睡猪: 可否贴下代码,不是很懂你的意思,刚用mvc
@汉卿:
public ActionResult Jcztysdj(string pagename)
{
//pagename就是页面通过传值传过来的
return View(pagename);
}
@伤心懒睡猪: 嗯,知道你的意思了,跟我的想法有点差别,我的想法是通过配置或者代码把你上面的代码也省了,因为他们的pagename 跟viewname是一样的。
很简单啊
public ActionResult Page(string pagename)
{
return View(pagename);
}
你的意思就是在每个view后面加个pagename参数是吧,嗯,知道你的意思了,跟我的想法有点差别,我的想法是通过配置或者代码把你上面的代码也省了,因为他们的pagename 跟viewname是一样的。