如何在JavaScript文件中混合Razor语法和JavaScript?

如何在JavaScript文件中混合Razor语法和JavaScript?,razor,asp.net-core,Razor,Asp.net Core,我需要在同一个语句中使用Razor语法混合和匹配JavaScript和C。我可能使用@:在Razor代码中编写JavaScript是错误的,因为Razor代码块中的最后一个表达式会破坏块后的所有JavaScript var myVar = document.getElementById("myId"); var linkText = "someText"; var JSVar = X; //X represents some number @{ int ID = JSVar;

我需要在同一个语句中使用Razor语法混合和匹配JavaScript和C。我可能使用@:在Razor代码中编写JavaScript是错误的,因为Razor代码块中的最后一个表达式会破坏块后的所有JavaScript

var myVar = document.getElementById("myId");
var linkText = "someText";
var JSVar = X;  //X represents some number
@{
    int ID = JSVar;
    @:myVar.innerHTML = @Html.ActionLink(@:linkText, "Details", "Cards", new { Id = ID});
}
我还尝试将其作为一个没有代码块的表达式来实现,如下所示:

myVar.innerHTML = @Html.ActionLink(@:linkText, "Details", "Cards", new { Id = @:IdVar });

这也破坏了下面的JavaScript。

我认为这是不可能的。我所做的(当我找不到更好的替代方案时)是将razor变量(如href或model值)存储在一个隐藏字段或div中,然后通过javascript将其取出


你到底想完成什么?可能有一种更优雅的方法来实现它?

基于这个问题,您似乎希望在客户端动态地使用JSVar中的值来收缩链接

如果是这样,您可以将JSVar附加到URL。比如说,

<input id="txtValue" type="text" value="Stackoverflow" />
<a id="myId">Navigate to Page</a>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script type="text/javascript">
    $(function () {
        $("#myId").click(function () {
            var JSVar = $("#txtValue").val();
            location.href = "@Url.Action("About", "Home")/id=" + JSVar;
        });
    })
</script>

导航到第页
$(函数(){
$(“#myId”)。单击(函数(){
var JSVar=$(“#txtValue”).val();
location.href=“@Url.Action(“About”,“Home”)/id=“+JSVar;
});
})

我正在尝试将表格单元格的innerHTML链接到我应用程序中的其他地方。我已经在html表中以纯文本形式插入了“linkText”,但在将其作为链接时遇到了问题。X的值从何处获得?X与问题无关。它表示一个JavaScript变量值(它是一个数字)。当视图在服务器端创建时,X甚至不存在。当在客户端单击myId时,您是否试图将X值附加到ULR?@Win DISCODE'X'。该变量是有效的。以上只是我代码的摘录,唯一有问题的代码是Razor block。JS变量只是为了让读者了解我是如何尝试将JS和Razor混合在一起的。我没有意识到你可以模仿这样的html元素。然而,对于'location.href'来自何处以及它代表什么,我有点困惑。我也尝试过这样做,因为我发布了一个问题:row.insertCell(0)。innerHTML=''+cardName+'';它会生成:cardName,因此由于语法不正确,使得链接无效。我无法想象为什么会出现这些引用。你不能将asp-*放在JavaScript中。您需要从不同的角度接近,例如使用链接的单击事件。您需要了解jQuery的基本知识以及DOM的工作原理;如果没有jQuery,您将在ASP.NETCore中遇到非常基本的问题。我对DOM和jQuery相当熟悉,但我不知道jQuery对ASP.NETCore是有利的。在此项目之前,我只使用jQuery,但我想使用基本库和master JS。显然,carid必须是服务器端变量。