模型中有方法不好吗?
Is it bad to have methods in a model?
在 ASP.NET MVC 中,我正在考虑实现一种将数据转换为 JSON 的方法。但是,我不确定在哪里添加此方法。我应该将它添加到 Controller、service class 还是 Model 中?因此,例如,假设我有一个名为 book 的模型和一个名为 Library 的控制器。
public class Book
{
public string Name { get; set; }
public string Json { get; set; }
}
public class Library: Controller
{
public ActionResult Book(string bookName)
{
return View();
}
}
是否应该在Book class中添加一个私有方法,如JsonConverter(object jsonToConvert)
,并在Book的构造函数中调用它?因此,用户将要转换的对象传递给 Book class,然后在实例化时将其转换为 Json 并分配给 Book.Json.
在模型中添加方法是一种不好的做法吗?添加具有 JsonConverter 的服务 class 并在控制器中进行转换是否更好?
所以,喜欢
public class Library: Controller
{
public ActionResult Book(string bookName)
{
var book = GetBook(bookName)
var json = Service.ConvertJson(book.object)
return View(book, json);
}
}
总结一下我的问题:在模型中添加私有方法并操作数据格式是不好的做法吗?我不想在控制器中进行转换的原因是我认为将数据格式转换为 class 是一种不好的做法,因为数据层是模型。我错了吗?
思想是保持层次之间相互抽象,牢记Single-Responsibility原则,一个class应该做一件事,做好一件事。
在这方面,您的模型负责定义数据模式。模型的实例将保存数据。就是这样。
这就是你的模型
public class Book
{
public string Name {get; set;}
public string Json {get; set;}
}
在这种情况下,输出一个 Book
的实例是一个端点问题。它与涉及您的服务的业务逻辑无关。
所以将它保存在控制器中
public class Library: Controller
{
public ActionResult Book(string bookName)
{
var book = GetBook(bookName)
var json = Service.ConvertJson(book.object)
return View(book, json);
}
}
是你最擅长的。
每当你试图取得成就时问问自己:这应该由谁负责?
- 管理员:把这想象成迎接你的服务员,带你到你的 table 并在餐厅为你点菜。
- 服务:这是给你做饭的厨师。
- 模特:这是您要在菜单中点的餐点。
转换为 JSON 与服务相关,因此该责任由控制器承担。
在 ASP.NET MVC 中,我正在考虑实现一种将数据转换为 JSON 的方法。但是,我不确定在哪里添加此方法。我应该将它添加到 Controller、service class 还是 Model 中?因此,例如,假设我有一个名为 book 的模型和一个名为 Library 的控制器。
public class Book
{
public string Name { get; set; }
public string Json { get; set; }
}
public class Library: Controller
{
public ActionResult Book(string bookName)
{
return View();
}
}
是否应该在Book class中添加一个私有方法,如JsonConverter(object jsonToConvert)
,并在Book的构造函数中调用它?因此,用户将要转换的对象传递给 Book class,然后在实例化时将其转换为 Json 并分配给 Book.Json.
在模型中添加方法是一种不好的做法吗?添加具有 JsonConverter 的服务 class 并在控制器中进行转换是否更好?
所以,喜欢
public class Library: Controller
{
public ActionResult Book(string bookName)
{
var book = GetBook(bookName)
var json = Service.ConvertJson(book.object)
return View(book, json);
}
}
总结一下我的问题:在模型中添加私有方法并操作数据格式是不好的做法吗?我不想在控制器中进行转换的原因是我认为将数据格式转换为 class 是一种不好的做法,因为数据层是模型。我错了吗?
思想是保持层次之间相互抽象,牢记Single-Responsibility原则,一个class应该做一件事,做好一件事。
在这方面,您的模型负责定义数据模式。模型的实例将保存数据。就是这样。
这就是你的模型
public class Book
{
public string Name {get; set;}
public string Json {get; set;}
}
在这种情况下,输出一个 Book
的实例是一个端点问题。它与涉及您的服务的业务逻辑无关。
所以将它保存在控制器中
public class Library: Controller
{
public ActionResult Book(string bookName)
{
var book = GetBook(bookName)
var json = Service.ConvertJson(book.object)
return View(book, json);
}
}
是你最擅长的。
每当你试图取得成就时问问自己:这应该由谁负责?
- 管理员:把这想象成迎接你的服务员,带你到你的 table 并在餐厅为你点菜。
- 服务:这是给你做饭的厨师。
- 模特:这是您要在菜单中点的餐点。
转换为 JSON 与服务相关,因此该责任由控制器承担。