在视图中混合razor语法和Javascript

在视图中混合razor语法和Javascript,javascript,asp.net-mvc,razor,Javascript,Asp.net Mvc,Razor,正确的方法是什么。我需要它像下面的例子一样工作 <input type="button" value="Resume" onclick="window.location = '/Test?testid=@(ViewBag.TestID)'" /> 正如扎巴夫斯基所说,我会使用ActionLink来实现这一点: 大概是这样的: @Html.ActionLink("Resume", "Test", new { testid = ViewBag.TestID }) actionlin

正确的方法是什么。我需要它像下面的例子一样工作

 <input type="button" value="Resume" onclick="window.location = '/Test?testid=@(ViewBag.TestID)'" />

正如扎巴夫斯基所说,我会使用ActionLink来实现这一点:

大概是这样的:

@Html.ActionLink("Resume", "Test", new { testid = ViewBag.TestID })
actionlink有很多覆盖,因此您需要选择一个适合您需要的覆盖


上面的一个输出一个a href,文本为“Resume”,将在当前控制器上执行“Test”,并传递testid=ViewBag.testid的routevalue。正如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>
函数newDoc(){window.location.assign(“http://www.abc.com")  }
希望这会有帮助。谢谢。

你可以像这样做:

<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>
函数newDoc(){window.location.assign(“http://www.abc.com")  }

希望这会有帮助。谢谢。

好吧,你写的是有效的。 您的代码可能有红色的VS下划线,因为它认为您有js错误,因为“”字符串未结束。。。但如果你运行它,它就会工作

要避免使用红色下划线,可以执行以下操作:

@{string js = "window.location = '/Test?testid="+ViewBag.TestID+"    '";}
<input type="button" value="Resume" onclick="@js" />
@{string js=“window.location=”/Test?testid=“+ViewBag.testid+””;}

好吧,你写的是有效的。 您的代码可能有红色的VS下划线,因为它认为您有js错误,因为“”字符串未结束。。。但如果你运行它,它就会工作

要避免使用红色下划线,可以执行以下操作:

@{string js = "window.location = '/Test?testid="+ViewBag.TestID+"    '";}
<input type="button" value="Resume" onclick="@js" />
@{string js=“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,您的web应用程序将完全崩溃。这就是为什么您应该始终编写语义正确的标记。在本例中,将使用锚定,因为在HTML中,按钮用于提交表单,锚定用于重定向到其他位置(这正是您在本例中试图实现的目标).

我绝对支持Zabavsky的评论,即您应该在这个特定示例中使用ActionLink,以获得语义正确的标记

但既然你问:

在视图中混合razor语法和Javascript

永远不要那样做

在您看来,您应该只有标记:

<input type="button" value="Resume" id="myButton" data-url="@Url.Action("Test", new { testid = ViewBag.TestID })" />

当然,如果用户禁用了javascript,您的web应用程序将完全崩溃。这就是为什么您应该始终编写语义正确的标记。在本例中,这将使用锚定,因为在HTML中,按钮用于提交表单,锚定用于重定向到其他位置(这正是您在本例中试图实现的)。

我认为在本例中,最好的方法是将其作为链接,不是按钮。我认为在这种情况下,最好的方法是将其作为链接,而不是按钮。是的,但是如何将razor语法粘贴到这个行窗口中。location.assign(“)没有视图解析器给我错误和/或产生错误的javascript语法。javascript可以在Razor视图中使用。似乎你不想使用javascript,只在使用Razor语法时寻找类似的东西…对吗?所以最好使用@Html.ActionLink。如果我不理解你的意思,请告诉我你是否在寻找其他东西正确的要求。是的,但是如何将razor语法粘贴到这行窗口中。location.assign(“),而不让视图解析器给我错误或产生错误的javascript语法。可以在razor视图中使用javascript。看起来你不想使用JavaScript,也不想只使用Razor语法来寻找类似的东西……对吧?所以最好使用@Html.ActionLink。如果我没有正确理解您的需求,请告诉我您是否在寻找其他产品。事实上,最好的方法是将其作为链接。虽然我的主要问题是如何在视图中混合razor语法和JS,如果这在不打破惯例/使用黑客等的情况下是可行的,那么最好的方法就是将其作为链接。虽然我的主要问题是如何在视图中混合razor语法和JS,如果这是可能的,而不打破惯例/使用黑客等。是的,这看起来是有效的方法。否则,不要担心用户不支持javascript,这个网站将由许多单页ajax驱动的应用程序组成,因此javascript在任何地方都是必不可少的。这不是使用语义不正确的markup.Perfect的有效理由。谢谢你,伙计。只有一件事,它应该是:(使用“而不是”内部数据url)是的,这看起来是一个有效的方法。否则,不要担心用户不支持javascript,这个网站将由许多单页ajax驱动的应用程序组成,因此javascript在任何地方都是必不可少的。这不是使用语义不正确的标记的有效理由。完美。谢谢你。只有一件事,它应该是:(在数据url中使用“和”而不是