2010-11-22 37 views
0

对于MVC来说是合理的。我的问题是我有一个控制器有3个不同的ActionResult,根据枚举调用它。
所有这三个操作结果都会返回相同的视图,但视图模型会使用不同的列表。在该视图中,用户应该能够点击列表中的项目并且基于项目的ID来查看细节。
例如网站/设施/图书馆返回图书馆清单,网站/设施/图书馆/ 1返回详细信息。当你输入完整的路径也能正常工作,但在查看自己点击锚MVC Url相对于变量ActionResult

<a href="@item.ID">@item.Name</a> 

在列表中的项目的URL返回网站/设施/ 1,而不是网站/设施/库/ 1。我不能使用ActionLink,因为要调用的Action是动态的。我知道这可以通过为每种类型创建不同的视图来解决,但我想知道是否可能有其他方法?

在此先感谢。

回答

1

可以使用这样的代码(一个javascript招):

<a href="" onclick="window.location = window.location + @item.ID">@item.Name</a> 

或者,如果你想使用HREF属性,你可以使用这样的代码:

<%=Html.ActionLink(item.Name, "Facilities", ViewData("ActionName"), new {id = item.ID}) %> 

(在这你必须在控制器中指定ViewData(“ActionName”)。

+0

我试过第二个选项,它的如此简单我感到惭愧,我没有想到它。理想情况下,需要在没有Javascript的情况下工作,因为它适用于移动开发,并非所有手机都有可用的JavaScript。第二种选择是伟大的,但。谢谢。 – Chiefy 2010-11-22 14:26:46

1

我建议你改变它,让你只有一个动作,但它需要一个参数来代替,并且根据参数你推入不同的列表到视图(或许使用3个不同的“帮助函数”), 。至少我会如何实现你所描述的内容!

祝你好运!

+0

多数民众赞成我最初如何实施它,但如果有人要复制列表的URL(或书签),然后再次使用它不会采取一个参数,并会失败。 – Chiefy 2010-11-22 14:03:32

+0

为什么不能复制和/或添加书签?由于参数包含在URL中,它也应该出现! (除非用户删除那部分,但这是他们的问题是不是?^^)有了一些奇特的路由,你会有完美的网址。但很好,你找到了一个你很满意的答案:) – Robin 2010-11-22 16:37:58