【问题标题】:asp.net mvc 2 - return JavaScript with Viewasp.net mvc 2 - 返回带有视图的 JavaScript
【发布时间】:2011-02-19 03:32:26
【问题描述】:

使用 ASP.NET MVC 2 我的母版页中有一个导航菜单。在导航菜单中,我正在尝试向当前页面相关的类添加一个类(即,主页会将 class="active" 添加到主页按钮)。我正在尝试考虑可扩展性以及如果以后导航发生更改我不想更改单个页面的事实。

我能想到的唯一方法是:

  1. 将 JavaScript 添加到每个单独的视图中,以便在 DOM 准备好时添加类
  2. 发生 return View() 时返回 JavaScript

关于第 (2) 点,我不确定该怎么做。到目前为止,我一直在我的控制器中执行以下操作:

    public ActionResult Index()
    {
        ViewData["message"] = JavaScript("<script type='text/javascript' language='javascript'> $(document).ready(function () { console.log('hi hi hi'); }); </script>");

        return View();
    }

但在我看来,当我打电话时:

<%: ViewData["message"] %>

我得到:System.Web.Mvc.JavaScriptResult 结果

你们有什么想法吗

  • 除了我列出的解决方案之外,如何解决导航菜单问题
  • 从控制器返回 JavaScript 以及您的视图

【问题讨论】:

    标签: javascript asp.net-mvc-2 view controller


    【解决方案1】:

    要修复您的代码,请在 ViewData["message"] 变量中保存一个字符串:

    public ActionResult Index()
    {
        ViewData["message"] = "<script type='text/javascript' language='javascript'> $(document).ready(function () { console.log('hi hi hi'); }); </script>";
    
        return View();
    }
    

    然后用 而不是 :

    在页面上渲染它
    <%= ViewData["message"] %>
    

    【讨论】:

    • 奇怪。我可以发誓我试过了。我知道使用 基本上会说 HTML.Encode()... 但比 做什么?
    • 另外,除了我列出的解决方案之外,您是否知道如何解决导航菜单问题?
    • 执行 Html.Encode 而 不执行。对于导航菜单,我通常建议将 ASP.NET 的导航功能与站点地图等一起使用。阅读更多关于它的信息。我认为下一页将是一个好的开始:asp.net/mvc/tutorials/…
    【解决方案2】:
    public JavaScriptResult Index() 
    {
        return JavaScript("<script type='text/javascript' language='javascript'> $(document).ready(function () { console.log('hi hi hi'); }); </script>"); 
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-15
      • 2014-11-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多