[英]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,则您的Web应用程序将完全崩溃。 这就是为什么您应该始终编写语义正确的标记的原因。 在这种情况下,将使用锚,因为在HTML按钮用于提交表单时,锚用于重定向到其他位置(这正是您在此特定情况下要实现的目标)。
正如Zabavsky所说,我将为此使用ActionLink:
像这样:
@Html.ActionLink("Resume", "Test", new { testid = ViewBag.TestID })
Actionlink有很多替代,因此您需要选择一个适合您需要的替代。
上面的代码输出了a href,其中文本“ Resume”将在当前控制器上执行操作“ Test”,并传递testid = ViewBag.TestID的路由值
您可以这样做:
<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" />
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.