Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
cshtml中的C#函数调用_C#_Asp.net - Fatal编程技术网

cshtml中的C#函数调用

cshtml中的C#函数调用,c#,asp.net,C#,Asp.net,尽管做了很多努力,但我无法在CSHTML代码中调用函数。像这样的建筑基本上可以工作吗 ***Function*** @functions { public void deleteRecord(int id, Database db) { db.Execute("DROP INDEX "+id+"ON Students"); } } ***Button calling that function*** <td><button onclic

尽管做了很多努力,但我无法在CSHTML代码中调用函数。像这样的建筑基本上可以工作吗

***Function***
@functions {
    public void deleteRecord(int id, Database db)
    {
        db.Execute("DROP INDEX "+id+"ON Students");
    }
}

***Button calling that function***
<td><button onclick="@deleteRecord(row.No, db)">Delete</button></td>
***函数***
@功能{
公共void deleteRecord(int-id,数据库db)
{
db.执行(“在学生身上放置索引”+id+);
}
}
***调用该函数的按钮***
删除
db是在SQL数据库之前声明的

像这样的建筑基本上可以工作吗

***Function***
@functions {
    public void deleteRecord(int id, Database db)
    {
        db.Execute("DROP INDEX "+id+"ON Students");
    }
}

***Button calling that function***
<td><button onclick="@deleteRecord(row.No, db)">Delete</button></td>
如果是的话,那就真的不应该了。这是以一种非常糟糕(难以调试/支持)的方式混合关注点

服务器端代码应该在服务器端对象中,而不是在客户端视图中。如果这是MVC,那么该方法可能属于模型。如果这是WebForms,那么该方法可能仍然属于模型或代码隐藏

不要把方法放在你的视野中。无论如何,您可能不能这样做,因为视图不是类,方法需要在类中。但即使你找到一些黑客允许你这么做,也不要


Edit:我还注意到您正试图从客户端操作调用此方法。即使你把它编译好了,这也行不通。客户端代码不能直接调用服务器端代码中的方法,反之亦然。将web应用程序视为两个应用程序,一个运行在服务器上,另一个运行在浏览器中。它们可以相互通信,但它们是在完全不同的计算机上的不同平台上运行的不同语言,它们看不到彼此的代码。

这是非常非常糟糕的方法。首先,您正在打破MVC规则,这些规则是严格的——数据的模型、表示数据的视图和确保模型和视图层之间交互的控制器

其次,您正在尝试通过原始SQL查询查询数据库。它并不像第一个问题那么糟糕,但是您是否考虑过使用ORM类实体框架或NHiBiName.</P> 在您的情况下,我建议您使用一段JavaScript和C#来达到您的目标

它应该大致如下所示:

文件
view.cshtml

<td><button id="deleteButton">Delete</button></td>
文件
SomePageController.cs

public ActionResult Delete(int id)
{
    // delete object from database
}

不,您放入
onclick
处理程序中的代码必须是JavaScript。您不能通过将页面中的按钮放入razor文件来神奇地允许它调用服务器上的函数。否。你混淆了服务器端/客户端,破坏了MVC模式。但启动服务呼叫很容易。