什么是正确的方法。我需要它像下面的例子一样工作。
<input type="button" value="Resume" onclick="window.location = '/Test?testid=@(ViewBag.TestID)'" />
什么是正确的方法。我需要它像下面的例子一样工作。
<input type="button" value="Resume" onclick="window.location = '/Test?testid=@(ViewBag.TestID)'" />
我绝对支持 Zabavsky 的评论,即您应该在此特定示例中使用 ActionLink 以获得语义正确的标记。
但既然你问:
在视图中将 razor 语法与 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 有很多覆盖,所以你需要选择一个适合你需要的。
上面的输出一个带有文本'Resume'的a href,将在当前控制器上执行'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" />