我有以下控制器:
public ActionResult delete(int id)
{
//call function
return RedirectToAction("Index");
}
在这里,我想从我的模型中调用以下函数:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using MySql.Data.MySqlClient;
namespace project1.Models.Admin
{
public class delete
{
public void delete(int id)
{
//xxx
const string ConnStr = "...";
MySqlConnection connection = new MySqlConnection(ConnStr);
connection.Open();
MySqlCommand sqlcmd2;
sqlcmd2 = connection.CreateCommand();
sqlcmd2.CommandText = "UPDATE `user` SET Aktive = 0 WHERE Nr = @id;";
sqlcmd2.Parameters.Add("@id", MySqlDbType.Int32).Value = id;
sqlcmd2.ExecuteNonQuery();
connection.Close();
//xxx
}
}
}
我得到的错误是“void”在这个上下文中是不允许的。有没有其他方法在这里调用我的函数,或者我应该把整个连接(在“”内)放到我的控制器中?
2条答案
按热度按时间20jt8wwn1#
代码中有几个问题。
首先你不能使用
delete
作为类名和成员名。说到这里delete
对一个班级来说是个很坏的名字。其次,您应该遵循命名约定,例如,对方法和类都使用pascalcase名称。
最后也是最重要的一点,您需要类的一个示例,您要调用该示例的方法:
如果你不´如果没有该类的示例,您还可以
delete
一static
一个。然后可以直接调用控制器中的方法:bksxznpy2#
更改方法名称;
编辑
首先,您应该注意命名约定。我把你的班名改成
DeleteAction
和方法名称DeleteRecord
```public class DeleteAction
{
public void DeleteRecord(int id)
{
//xxx
const string ConnStr = "...";
}
public ActionResult delete(int id)
{
var deleteActionObject = new DeleteAction();
deleteActionObject.DeleteRecord(id);
return RedirectToAction("Index");
}