1

通过ASP.NET MVC 2生成的默认脚手架视图包含链接,如:ASP.NET MVC 2个返回链接到相应的视图

<%: Html.ActionLink("Back to List", "Index") %> 
<%: Html.ActionLink("Create New", "Create") %> 

这些链接是完美的,如果我从同一来到这个页面根。但是,例如,如果我有订单和人员,并且我通过/Persons/Orders/3导航到/Orders/Edit/17,那么'回到列表'会将我退回给订单root not Persons root,因为'Edit Orders'视图只知道订单。这使得导航尴尬,打破了流程。

我想重复使用相同的'编辑订单'视图,无论我来自哪里,但我不知道如何传递此信息。

我知道可以传递像/Orders/Edit/17?myparam=myvalue这样的参数,但是如果我需要传递表示网格排序/过滤顺序的参数,这会限制我的选择吗?

将返回/原点位置传递给我的视图的首选方式是什么,以便它可以正确呈现链接?否则,我怎样才能以不同于控制器的方式调用视图?

编辑:

对于一个干净的解决方案,请参阅THIS POST

回答

1

通过查询字符串参数中传递不会真的,只要你不使用相同的名称限制你。 querystrings有一个大小限制,但你可能不会触及它。

这基本上是我怎么做的。我很好奇看到别人的回答。

+0

这个功能看起来应该是框架中应该考虑到的东西;要指定这些参数似乎相当棘手,因为您必须为每个级别的导航都这样做。 – Harper 2010-09-23 23:57:19

0

这个功能看起来应该是框架中应该考虑到的东西;要指定这些参数似乎相当难以理解,因为您必须为每个级别的导航都这样做。

为什么?返回是属于浏览器的内容,以及历史。它一直这样,为什么框架需要处理呢?

你需要的不是标准。

此外,您有责任保持代码干燥。你一定可以处理它,你所拥有的所有重复就是你所调用的函数的名字。

+0

这与“返回”功能没有任何关系。我用正确的解决方案编辑了我的帖子;你应该看看它 - 它可能会帮助你。 – Harper 2010-09-24 22:23:56

+0

@Harper在重新阅读您的问题后,我发现您重复浏览器功能的原因是由于默认的脚手架视图/这不是一个好的参数。关于链接,您可以使用RenderPartial和RenderAction非常相似,甚至可以用完整的视图来完成。我认为你已经看得更多了,因为将模型数据传递给视图就是你在其中做的任何事情。 – eglasius 2010-09-24 23:11:17