我是asp.net Web Forms开发人员,我知道Asp.net MVC的基础知识.开发人员谈论MVC的优点,但我没有遇到过使用MVC而不是Asp.NET的明确或引人注目的描述.
这不是重复的问题,我已经经历了几乎所有类似的问题,但没有得到更清楚的描述更多与现实生活的例子.我很欣赏并希望用现实生活中的例子解释下面提到的每一个问题,请不要将其标记为重复.
我知道你不能用Asp.NET MVC取代Asp.NET Web Forms,我们在MVC中仍有以下优势:
asp.net-mvc webforms asp.net-mvc-3 asp.net-mvc-4 asp.net-mvc-5
将视图模型与域模型混合是否合理?
所以即视图模型对象包含一些域模型对象(不是相反的方式!)
不知道怎么解释这个,但是这里......
我使用EF 4.3构建了代码优先数据模型.其中一个类"地址"包含典型的地址数据,街道,城市,州等.模型中的其他类包含"地址"类的实例.
问题.将使用不同的视图收集/呈现数据,其中一些将需要地址字段,而另一些则不需要.
我可以构建不同的视图模型,每个模型都具有必要的验证属性,并在数据模型和视图模型之间来回复制数据,但这似乎是错误的.
我错过了什么?必须有一种更聪明的方法来做到这一点.
谢谢你的帮助,吉米
我是编程和ASP.net MVC 3的新手,所以不要对我对此缺乏了解感到惊讶.好吧,我想要乘以两位小数,一位十进制来自用户填充的形式,另一位十进制来自Model类(从数据库中获取).
我有两个名为RATE&PROJECTMATERIAL的Model类.RATE类有一个名为Amount的项目,表示一个Rate的数量,PROJECTMATERIAL类有一个项目数量.类是相关的,我希望能够说变量1 =数量*Rates.amount并将variable1返回到我的索引,删除,详细信息视图.我不想将variable1存储到我的数据库,但我只想在我的视图中显示.....但我不知道如何以及在哪里做
项目材料类的代码..
public class ProjectMaterial
{
public int ProjectMaterialID { get; set; }
[Required]
[Display(Name = "Scope Name")]
public int? ScopeID { get; set; }
[Required]
[Display(Name = "Rate Code")]
public int? RateID { get; set; }
[Required]
[Display(Name = "Quantity")]
public decimal Quantity { get; set; }
public virtual Scope Scopes { get; set; }
public virtual Rate Rates { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
范围类的代码..
public class Rate
{ …Run Code Online (Sandbox Code Playgroud) 我的项目分层如下:
DAL (Entity)- > BLL (DTO)- > ApplicationComponent (ViewModel)。
将要ApplicationComponent访问的application()的多个组件BLL。组件包括Windows服务,Web服务,Web API和MVC控制器。
我改造NHibernate Entity的对象DTO对象,而从通过他们DAL来BLL。在将此状态传递给时ApplicationComponent,BLL再次将其转换为ViewModel。
这可以帮助我区分关注点以及如何在每一层中处理数据。我不赞成NHibernate Entity出于以下原因返回对象:-
UI我想要隐藏的(或仅在需要时暴露),例如密码,用户类型,权限等。NHibernate在访问属性时执行附加查询,这将使延迟加载的使用无效。Entity)用户的不必要数据会造成错误的混淆和漏洞。BLL/中UI。Entity不适用于UI。它不能UI在所有情况下都可用。DTO进行用户输入验证,看起来有点奇怪Entity。我使用这种方法面临以下问题:-
AutoMapper或类似方法将其最小化;但是它不能完全解决问题。我正在尝试了解我的MVC2网站的最佳架构.
由于我一直在尝试使用Entity Framework将数据输入和输出数据库,我开始意识到我到目前为止构建的简单域模型并未映射到我计划视图的所有需求.所以我正在考虑遵循这个问题的对应答案:为什么两个类,视图模型和领域模型?.
但是,在域模型和EF模型之间我可以看到的似乎存在少量收益的冗余,我甚至无法理解概念差异.我没有要求在未来切换数据源,我也不认为需要切换我的ORM解决方案.
问题:
如果我遵循这种模式,那么,由于我使用的是实体框架,我不应该只使用我的EF实体直接作为域模型服务吗?(注意:我没有想过通过"怎么样",但是答案也很受欢迎.)或者我仍然建议管理一组单独的域模型?
我想在MVC视图上显示一个字符串类型作为复选框,但在HTTP帖子上将其作为字符串类型返回.问题是它在HTTP Post上返回false.以下是我的代码:
视图:
@model List<Car>
foreach(var car in Model){
bool isFourWheel = false;
if(bool.TryParse(car.IsFourWheel, out isFourWheel){
@Html.CheckBox("IsFourWheel", isFourWheel); //need to be rendered as checkbox, but returns string type on HTTP POST
}
}
Run Code Online (Sandbox Code Playgroud)
模型:
public class Car
{
public string IsFourWheel { get; set; } //bad naming, but it can contain any type, include boolean
}
Run Code Online (Sandbox Code Playgroud)
控制器:
public ActionResult Index()
{
var cars = new List<Car>(){ new Car(){IsFourWheel = "true"},new Car(){IsFourWheel = "false"} };
return View(cars);
}
[HttpPost]
public ActionResult …Run Code Online (Sandbox Code Playgroud) asp.net-mvc ×3
viewmodel ×2
asp.net ×1
c# ×1
domain-model ×1
mapping ×1
model ×1
nhibernate ×1
orm ×1
webforms ×1