[英]How to pass data to controller discreetly in ASP.NET MVC?
我正在尝试使用.NET MVC来实现用户可选的主题。 主题存储为css捆绑包,我从会话中存储的变量更改捆绑包请求:
@{
if (Session["Theme"] == null)
{
Session["Theme"] = "cerulean";
}
}
@Styles.Render("~/bundles/" + Session["Theme"] + "/css")
现在,我能够将主题字符串传递给控制器以修改Session变量的唯一方法是通过路由参数,这些参数对用户公开(至少在第一页上)。
<li>@Html.ActionLink("Default", "Index/default", "Home")</li>
我一直在尝试提出一种使用某种形式和/或隐藏字段将这些参数传递给控制器的方法,但到目前为止仍未成功。 我觉得我可能是从错误的角度来解决这个问题,是否有我缺少的东西或解决这个问题的更好方法?
编辑:
我不清楚用户如何选择主题。 我有一个类似于上面的链接的下拉菜单。 用户单击链接之一,然后将路线参数值处理到Session变量中。 读取Session变量,并根据所选主题选择要加载的包。
您可以将此值存储在cookie中,并实现一个用于填充会话的全局过滤器:
在客户端,您可以使用jquery-cookie插件,因此用于设置它的代码将类似于:
$.cookie('theme', 'cerulean');
您没有指定用户选择主题的确切方式,但是假设它是一个下拉列表或按钮,则必须将该代码放入相应的事件处理程序中。
在服务器端,使用自定义操作过滤器从Cookie中提取主题变量并填充会话。
您还应该进行故障转移(默认主题),以防未传递Cookie。
另一种解决方案是使用支持主题的自定义视图引擎。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.