MVC 4 - 脚手架 - 为什么我的1:1和1:M属性被跳过了?

时间:2013-02-19 00:07:35

标签: asp.net-mvc entity-framework asp.net-mvc-4 scaffolding

我是MVC 4的新手,我有以下课程:

public class BicycleSellerListing
{
    public int BicycleSellerListingId { get; set; }
    public UserProfile UserProfile { get; set; }
    public System.DateTimeOffset ListingDate { get; set; }
    public double ListingPrice { get; set; }
    public string BicycleModel { get; set; }
    public string Color { get; set; }
    public string Comments { get; set; }
    public BicycleManufacturer BicycleManfacturer { get; set; }
    public BicycleType BicycleType { get; set; }
    public BicycleFrameSize BicycleFrameSize { get; set; }
    public DateTime ModelYear { get; set; }
    public ICollection<BicycleAttribute> BicycleAttributeList { get; set; }
}

当我为这个类创建一个新的Controller时,我使用Entity Framework scaffolding选项选择了具有读/写操作和视图的 MVC控制器。在Create.cshtml中,它跳过为我的所有1:1和1:M属性(BicycleManufacturer,BicycleType等)创建编辑器。理想情况下,我希望VS为这些属性创建下拉列表编辑器。

是否可以为这些属性创建编辑器,还是需要手动执行?

1 个答案:

答案 0 :(得分:4)

复杂的对象需要一些帮助。值得庆幸的是,这并不难做到,MVC框架在这方面可以自定义。

您要做的第一件事是创建视图来处理编辑和显示。它们位于Views \ Shared。

下的编辑器和显示模板文件夹中
  

https://github.com/MisterJames/BootstrappingMvc/tree/master/BootstrappingMvc/Views/Shared

接下来,您需要使用UIHint在视图模型上装饰属性,以告知MVC要使用的视图。

  

https://github.com/MisterJames/BootstrappingMvc/blob/master/BootstrappingMvc/Models/MoviePass.cs

这将有助于照顾您的1:1。你会想要看看像MvcScaffolding这样的东西来处理你的清单项目,它做得相当不错

这里有一个完整的演练:

  

http://jameschambers.com/2012/07/bootstrapping-mvc-say-no-to-checkboxes/

干杯。