ASP.NET MVC2 - 检测javascript,将结果存储在会话变量中

时间:2010-08-18 21:38:25

标签: asp.net-mvc asp.net-mvc-2

我想根据是否启用javascript在部分视图中呈现特定的HTML。我的想法是如何检测javascript是否已启用并将其存储在会话变量中,然后我可以在我的视图中进行测试,例如。

<div class="product">
<%
    // if Javascript is enabled, load the images asynchrously, otherwise load them directly.
    string imgHtml = "<img id=\"myImage\" src=\"{0}\" alt=\"MyImage\" />";
    if ((bool)Session["jsEnabled"])
       imgHtml = String.Format(imgHtml, Url.Content("~/Content/images/ajax-loader.gif") + "\" onload=\"loadImageAsync(this, '" + Url.Content("~/Content/images/" + Model.thumbnail) + "')");
   else
       imgHtml = String.Format(imgHtml, Url.Content("~/Content/images/image.jpg")); 
%>

    <div><%= imgHtml %></div>
</div>

从我所阅读的内容看来,似乎建议使用隐藏字段并在javascript中设置它的值,但是,我不太明白如何在MVC中使用它,除非我在某处发布数据(此特定视图)不在表格内。)

2 个答案:

答案 0 :(得分:0)

如果我错了,请纠正我,但看起来你正在尝试使用渐进式增强功能。如果是这种情况,那么正确的事情是让页面呈现最基本的版本(.gif),然后尝试让更高级的技术(javascript)本身取代/用更高级的(javascript)覆盖它版本

答案 1 :(得分:0)

您可以使用JavaScript对设置会话变量的方法进行AJAX调用。如果未启用JS,则不会进行任何调用,也不会设置变量。

我还会将所有代码拉出到一个辅助方法中,该方法只需要获取图像的src,因为它可以使您的视图更加清晰。