2011-11-01 102 views
0

我在URL中有一些参数,我希望出现在我的MVC3应用程序中的所有页面的URL中。例如:MVC3 URL参数

mycompany.com/home?param=1 
mycompany.com/cart?param=1 
mycompany.com/logout?param=1 

无论用户导航到一个新的页面或提交表单,我怎么能有我的参数 出现在我的所有网页?现在我唯一能想到的方法就是重新构建我需要呈现的每个新视图的URL。 MVC中是否有内置功能来完成此功能?

感谢

回答

0

这听起来像是你应该在会话存储,而不是更新所有链接添加相同的参数。

+0

thx,可以这样做,但是我可以我正在努力寻找更多本地MVC解决方案。这是我正在寻找的答案http://forums.asp.net/p/1746918/4718527.aspx/1?p=True&t=634587819228293082 – River

+0

如果你想采取纯粹的MVC方法,你可能想看看在这样做的原因。你正在为自己制造维护噩梦。如果您需要更改它,则必须查找将参数添加到查询字符串的所有实例,并更新所有实例。小姐一个,你打破了一些东西。我是否可以建议至少创建一个帮手,并始终使用它?至少它是集中式的。另一个想法是查询字符串是用户可以轻松操作的东西,这至少是一个麻烦,安全问题也是最糟糕的。 – Luke

0

您可以使用Session变量作为其他海报的建议,或者您可以使用包含此静态参数值的基本视图模型。

所以你的基本的看法是这样的:

public class BaseViewModel 
{ 
    public static int ParamValue = 1; 
} 

那么在您使用每个视图中的每个视图模型,你有这样的事情:

public class PageViewModel : BaseViewModel 
{ 
    // properties 
} 

这样,在每个视图中,只要需要访问它就可以引用@ Model.ParamValue:

@Model Namespace.PageViewModel 

My param value is <b>@Model.ParamValue</b> 
+0

这是否意味着当我导航到下一页时,我必须使用参数值更新URL? – River