繁体   English   中英

如何在ASP.NET MVC中谨慎地将数据传递给控制器​​?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM