【问题标题】:Call razor c# function from javascript function从javascript函数调用razor c#函数
【发布时间】:2014-12-24 05:26:15
【问题描述】:

我在一个文件中有一个 html 链接

<a href="#" onClick="xupdate('Home')" id="padlink">Home</a>

点击后我希望执行一个 js 函数(在另一个文件中,扩展名为 js),即:

function xupdate(string) {
     document.title = string;
     //Call razor c# function
}

现在我在 cshtml 文件中有一个 c# 函数(它读取文件并显示它们的信息):

@helper fileRead(String file) {
            var dataFile = Server.MapPath(file);
            Array userData = File.ReadAllLines(dataFile);
            foreach (string dataLine in userData) {
                foreach (string dataItem in dataLine.Split(',')) {
                    //dataItem <text>&nbsp;</text>
                    @Html.Raw(dataItem);
                 }
             }
}

我想从 js xupdate() 函数中调用 fileRead 函数,并将字符串的值作为参数发送到 fileRead 中。有没有办法做到这一点?

注意:我已经在 cshtml 文件中包含了 html 链接,并且我的函数可以正常工作。我也知道调用 c# 函数时必须包含文件扩展名。

【问题讨论】:

    标签: javascript c# asp.net razor


    【解决方案1】:

    您不能直接从 javascript 调用 C# 函数,因为 javascript 在客户端执行,而 C# 函数在服务器端执行。

    所以你必须用其他方式来称呼它,比如 AJAX。

    在控制器中定义您的函数并通过 AJAX 调用来调用它。

    【讨论】:

      【解决方案2】:

      使用 AJAX:

      var ret = null;
      $.ajax({
         async: false,
         url: "YourFunctionName_in_Controller",
         dataType: "json",
         success: function (data) {ret = data;}
            });
      return ret;
      

      【讨论】: