【问题标题】:Mixing Razor with Javascript将 Razor 与 Javascript 混合使用
【发布时间】:2015-12-11 12:57:58
【问题描述】:

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

它没有用。

【问题讨论】:

  • @AndyKorneyev 不是骗子,OP 缺少剃刀的概念,而不是语法
  • 有人在编程中错过了操作。

标签: javascript c# razor


【解决方案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 不同)或者浏览器允许你做的任何其他事情,而不是你的服务器。

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

【讨论】:

  • 如何在按钮单击时调用 C# 代码并将 C# 代码放在同一页面中?
  • @Munashe 您不能在 javascript 中调用服务器方法,唯一的解决方案是:在客户端上创建逻辑,或者对服务器进行 REST 调用(使用 ajax)并将参数传递给服务器,这样它可以处理你的逻辑
猜你喜欢
  • 1970-01-01
  • 2017-08-20
  • 2011-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多