【问题标题】:ASP.net Razor MVC get URL and place it within javascript tagsASP.net Razor MVC 获取 URL 并将其放置在 javascript 标记中
【发布时间】:2018-07-05 06:40:57
【问题描述】:

大家好,我的 Razor cshtml 页面中有以下代码:

<script type="text/javascript">
   @{<text>var ajaxDirPath = </text>Url.Content("~/") + ViewContext.RouteData.Values["controller"].ToString() + <text>';</text>}
</script>

目前我在 ..("~/") ViewContex... 的代码中有一个错误:

无效的表达式术语'if'

;预计

我尝试了很多方法,但似乎没有任何效果。格式化它的正确方法是什么,结果如下:

var ajaxDirPath = '/baseName/viewName/';

【问题讨论】:

  • 为什么不只是var ajaxDirPath = '@Url.Action("actionName", "controllerName")';
  • @StephenMuecke 因为我希望它具有通用性,这样我就不必根据控制器和查看它的位置为我的每个 ajax 调用更改它。
  • 你的意思是你想要当前的控制器和/或动作名称吗?如果是这样,您可以使用空字符串代替实际名称
  • @StephenMuecke 请发布答案以表明这一点。
  • 从您的问题中不清楚您想要生成什么 - 我之前评论中的假设是否正确?

标签: asp.net asp.net-mvc asp.net-mvc-4 razor


【解决方案1】:

我认为有一种更简洁的方法可以执行您在上面的回答中描述的内容。

将此代码添加到您的视图中

@{
    var path = $"/{ViewContext.RouteData.Values["controller"]}/{ViewContext.RouteData.Values["action"]}";
}

然后在您视图的脚本部分中

<script type="text/javascript">
    var ajaxdirpath = '@path';
</script>

这为您提供了您正在寻找的 /"controller"/"action",并且不会弄乱您的 javascript。您可以将 razor 语法的那部分与您拥有的任何其他变量声明一起向上移动,这样它们就可以保持在一起。

【讨论】:

    【解决方案2】:

    终于明白了:)

    <script type="text/javascript">
       @{<text>var ajaxDirPath = '@Url.Content("~/")@ViewContext.RouteData.Values["controller"].ToString()/';</text>}
    </script>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-23
      • 1970-01-01
      • 2020-09-18
      • 1970-01-01
      • 1970-01-01
      • 2018-10-04
      • 1970-01-01
      • 2014-08-03
      相关资源
      最近更新 更多