我需要在同一语句中使用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。
答案 0 :(得分:1)
根据这个问题,您似乎希望在客户端与 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>
答案 1 :(得分:0)
我不认为这是可能的。我所做的(当我无法提出更好的替代方案时)是将隐藏变量(如href或模型值)存储在隐藏字段或div中,然后我可以通过javascript将其拉出。
你想要完成什么?可能有一种更优雅的方式来实现它?