用Javascript混合Razor

时间:2015-12-11 12:57:59

标签: javascript c# razor

我试图在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>

&#34; Console.WriteLine&#34;甚至没有被召唤。如何在按钮单击时调用C#代码?

EDIT 我试过了

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

它没有用。

1 个答案:

答案 0 :(得分:1)

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

Razor渲染服务器端

所以你的功能只是

function beginSubmit() {

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

因为c#Console.WriteLine("DELETING.....");没有返回任何内容,所以当razor引擎编译cshtml文件时,它只会记录 DELETING .....

JavaScript呈现客户端

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

除非你有针对该调用的(REST)API,否则你不能从javascript调用服务器端代码。即使在这种情况下,您也需要ajax来从客户端调用它