在视图中混合使用razor语法和Javascript
Mixing razor syntax with Javascript in views
正确的方法是什么。我需要它像下面的例子一样工作。
<input type="button" value="Resume" onclick="window.location = '/Test?testid=@(ViewBag.TestID)'" />
我绝对支持Zabavsky的评论,即您应该为这个特定的示例使用ActionLink,以便具有语义正确的标记。
但既然你问:
在视图中混合剃刀语法和Javascript
永远不要那样做。
在你看来,你应该只有标记:
<input type="button" value="Resume" id="myButton" data-url="@Url.Action("Test", new { testid = ViewBag.TestID })" />
和javascript(在一个单独的文件中),您可以在其中使用此标记并不引人注目地增强它:
$(function() {
$('#myButton').click(function() {
window.location.href = $(this).data('url');
});
});
当然,如果用户禁用了javascript,你的网络应用程序就会完全崩溃。这就是为什么您应该始终编写语义正确的标记。在这种情况下,这将是使用锚,因为在HTML中,按钮用于提交表单,锚用于重定向到其他位置(这正是您在这种特定情况下试图实现的)。
正如Zabavsky所说,我会为此使用ActionLink:
类似这样的东西:
@Html.ActionLink("Resume", "Test", new { testid = ViewBag.TestID })
actionlink有很多覆盖,所以你需要选择一个适合你需要的。
上面的一个输出一个a href,文本为"Resume",将在当前控制器上执行操作"Test",通过testid=ViewBag.testid 的routevalue
你可以这样做:
<html><head><script>function newDoc() { window.location.assign("http://www.abc.com") }</script></head><body><input type="button" value="Load new document" onclick="newDoc()"></body></html>
希望它能有所帮助。谢谢
好吧,你写的是有效的。你可能让VS在你的代码下面用红色下划线,因为它认为你有一个js错误,因为"字符串没有结束。。。但如果你运行它,它会起作用。
为了避免红色下划线,您可以执行以下操作:
@{string js = "window.location = '/Test?testid="+ViewBag.TestID+" '";}
<input type="button" value="Resume" onclick="@js" />
相关文章:
- 铬:“;未捕获的语法错误:意外的标记:"
- 在挖空.js模板中保留 Razor 语法突出显示
- 在具有 Razor 语法的表元素中使用折叠项
- 如何使用 razor 语法设置 javascript 变量或调用函数
- 如何正确地将javascript与razor语法结合起来
- Javascript 中的 C# Razor foreach 循环语法
- 动态2d数组,语法错误JavaScript和Razor
- 使用Razor语法调用JavaScript函数
- 混合JavaScript和Razor语法
- 在视图中混合使用razor语法和Javascript
- ASP.NET MVC4,Javascript中的Razor:页面运行,但VS2012中出现语法错误
- 使用Razor c#语法命名id
- 在执行razor语法后执行脚本
- Razor语法防止在Razor代码段后面有空格
- 在Asp.net MVC Razor语法中使用JavaScript变量
- 外部Javascript中的Razor语法
- asp.net mvc -如何在Razor语法中使用JavaScript
- 在JavaScript条件语句中使用Razor语法
- 如何用razor语法填充本地URL
- 我的“数据”在哪里?Razor语法中的Ajax选项