我有一个asp.net-mvc网站,几乎是一个CRUD应用程序,但我也做了一些在webview之外添加&更新(从电子表格等上传)。 Based on this article,我试图获得尽可能多的MVC项目之外的逻辑到一个单独的共享项目,所以我可以在所有情况下重复使用相同的代码,我试图隔离和分离我的“读取”viewModels绑定到用户界面显示来自“编辑”视图的模型,这些模型表示在表单文章中发布到服务器的内容。在asp.net-mvc中,将我的“EditViewModel”类移到我的MVC Web项目之外是错误的吗?
我有解决方案的一些项目(domainobjects,importexport等),它们与其他的解决方案,加上MVC项目共享已在MVC项目下面的目录
- 控制器
- 查看
- 的ViewModels
- 脚本
- EditViewModels
我的ViewModels文件夹代表我(绑定到我的意见的对象的容器对象通常包括:
- 域对象和
- 一堆SelectListItem的IEnumerable的填充UI下拉菜单等
是这样的:
public class OrderViewModel
{
public Order MyOrder {get;set;}
public IEnumerable<SelectListItem> OrderTypes {get;set;}
public IEnumerable<SelectListItem> Sizes {get;set;}
}
我EditViewModels文件夹代表的对象THA TI是从形式发布到服务器,因此它们通常是简单的平面物体只primatives我那么像这样添加或更新我的数据库之前填充域对象有:
public class OrderEditViewModel
{
public int Id {get;set;}
public int OrderTypeId {get;set;}
public int SizeId {get;set;}
}
我的主要问题是,当我有一个方法在我的控制器类,通常看起来像这样(简化):
public ActionResult Update(OrderEditViewModel order)
{
var existingOrder = _repository.GetOrder(order.Id);
existingOrder.Name = order.Name;
existingOrder.Size = _repository.GetSize(order.SizeId);
existingOrder.Price = order.Price;
_repository.Save(existingOrder);
return Json(Result = "Success");
}
我试图找出如何让尽可能多的代码尽可能MVC项目之外但这迫使我把所有我的班中MVC项目之外的EditViewModel,以便可以重用这些对象。
有没有人看到这些“Post”数据结构归类于MVC项目外的任何错误。鉴于它是一个“viewmodel”类,将它从视图中移走是不对的,但我没有看到任何其他方式在MVC项目之外共享此代码。也许这里的“viewModel”这个名字可能错了吗?
我倾向于同意你的看法。 。 – leora