将Razor与Javascript混合使用

本文关键字:混合 Javascript Razor | 更新日期: 2023-09-27 18:26:23

我试图在Javascript中调用C#代码,但它不起作用。这是我的代码:

    @{
      ViewBag.Title = "Db Maintenance";
    }
   <script type="text/javascript">
      function beginSubmit() {
         @{
        Console.WriteLine("DELETING.....");
         }
      }
      function cancelConfigForm() {
        closeWindow("configDbMaitenanceWindow");
      }
    </script>
    <div>
      <button class="k-button k-button-icontext" type="submit" title="Delete Error Records" onclick="beginSubmit()">
        <img src="@Url.Content("~/Content/Icons/metro-submit.png")" class="k-icon blank-background" alt="Submit Icon" />Delete Error Records
      </button>
      <button class="k-button k-button-icontext" type="reset" title="Close the window" onclick="cancelConfigForm()">
        <img src="@Url.Content("~/Content/Icons/metro-cancel.png")" class="k-icon blank-background" alt="Cancel Icon" />Cancel
      </button>
    </div>

甚至没有调用"Console.WriteLine"。如何在单击按钮时调用C#代码?

编辑我试过

  <text>
         Console.WriteLine("DELETING.....");
  </text>

但没用。

将Razor与Javascript混合使用

您正在混合两种完全不同的技术。

Razor渲染服务器端

所以你的功能只是

function beginSubmit() {
}
//notice empty line, cuz Console.WriteLine("DELETING....."); doesn't return anything

因为c#Console.WriteLine("DELETING.....");不返回任何内容,所以它只记录DELETING剃刀引擎编译cshtml文件时。

JavaScript呈现客户端

因此,您要求浏览器为您做一些事情,调用alert、console.log(这与c#log不同)或浏览器允许您做的任何其他事情,而不是您的服务器。

并且您不能从javascript调用服务器端代码,除非您有(REST)API用于该调用。即使在这种情况下,您也需要ajax从客户端调用它