Asp.net mvc Net MVC2 TekPub入门网站方法问题
好吧,我刚刚遇到了这个问题,我本应该只是查看我的电子邮件,但我最终还是看了这个(而且离订阅TekPub不远) 现在这个应用程序是一个很好的起点,但它给我提出了一个问题,以及我被证明遵循的开发过程(正确或错误)。将数据传递到视图时,不会从LinqToSql对象进行转换。对这件事有什么异议吗 我能看到的主要问题是验证,当使用MVC的内置验证时,这是否会导致问题,因为这是我们广泛使用的东西。因为我们使用的是LinqToSql生成的内置对象,那么如何添加验证呢Asp.net mvc Net MVC2 TekPub入门网站方法问题,asp.net-mvc,architecture,Asp.net Mvc,Architecture,好吧,我刚刚遇到了这个问题,我本应该只是查看我的电子邮件,但我最终还是看了这个(而且离订阅TekPub不远) 现在这个应用程序是一个很好的起点,但它给我提出了一个问题,以及我被证明遵循的开发过程(正确或错误)。将数据传递到视图时,不会从LinqToSql对象进行转换。对这件事有什么异议吗 我能看到的主要问题是验证,当使用MVC的内置验证时,这是否会导致问题,因为这是我们广泛使用的东西。因为我们使用的是LinqToSql生成的内置对象,那么如何添加验证呢 [Required(ErrorMessa
[Required(ErrorMessage="Name is Required")]
public string Name {get;set;}
有兴趣了解这种方法的好处,以及我们在开发过程中的经验所带来的任何负面影响
这是否应该作为指导,我们应该使用ViewModels?如果是这样的话,我们是否应该总是在简单的情况下使用它们?在应用程序逻辑中,实体如何/在何处转换为ViewModel?对于实体对象,可以使用buddy类,从而创建第二个类,作为实体的元数据提供程序。例如,使用Linq to Sql生成的客户实体,我可以创建一个buddy类,如下所示:
[MetadataType(typeof(CustomerMeta))]
partial class Customer {
}
public class CustomerMeta {
[DisplayName("Forename", Required(ErrorMessage = "Forename is required.")]
public string Forename { get; set;}
}
实体作为分部类生成,因此您可以向其中添加自己的代码
或者,您可以放弃将实体类型推送到视图中,并根据所需的功能创建特定的模型,例如,我通常会有一个用户实体,但当我需要创建用户时,我有一个称为CreateUserSpec模型的模型:
public class CreateUserSpec
{
[DisplayName("Forename")]
public string Forename { get; set; }
}
其中包含用户属性的子集,仅包含创建用户所需的属性。这是我将传递到视图并从表单数据重新填充的模型。例如:
public class AccountController
{
public ActionResult Register() {
return View(new CreateUserSpec());
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Register(CreateUserSpec spec) {
if (!ModelState.IsValid) {
return View(spec);
}
var user = UserFactory.CreateUser(spec);
// Redirect to authorisation page?
}
}
谢谢-在您的应用程序逻辑中,您在哪里执行从实体到模型的转换?这取决于您如何管理您的关注点。目前我更喜欢瘦控制器,所以大部分工作都是通过工厂或存储库完成的。我已经更新了上面的示例。