【问题标题】:Implementing Dropdownlist on Asp.net MVC 3 from viewModel从 viewModel 在 Asp.net MVC 3 上实现 Dropdownlist
【发布时间】:2011-08-19 06:09:15
【问题描述】:

我是 .net 和 mvc 平台的新手,我有很多 int 字段来存储一些下拉列表值,由于数据库大小,我创建了字段 int 类型,所以我通过这种方法实现下拉列表,它可以工作但是我不知道在 viewmodel 上存储值文本是否是正确的解决方案,这里是示例代码:

对不起,我的英语很抱歉,如果您有什么不明白的地方,请告诉我。

模型属性.cs

    [Required(ErrorMessage = "Bu alan gereklidir!")]
    [Display(Name = "Şehir"), MaxLength(60)]
    public int City { get; set; }

propertymgmtviewModel

 public Property Property { get; set; }
    public IEnumerable<Property> Properties { get; set; }
    public IEnumerable<SelectListItem> Cities
    {
        get
        {
            return new[]
            {
            new SelectListItem { Text="--Select One---", Value = "", Selected=true},
            new SelectListItem { Text="Chicago", Value = "1"},
            new SelectListItem { Text="New York", Value = "2"},
            new SelectListItem { Text="Zimbabwe", Value = "3"},
            };
        }

用于编辑视图页面的视图:

 @Html.DropDownListFor(model => model.Property.City,
        new SelectList(Model.Cities,"Value","Text"))

显示值视图页:

   <td>
   @(item.City != null ?
   Model.Cities.SingleOrDefault(c => c.Value == item.City.ToString()).Text
   : "")

        </td>

【问题讨论】:

  • 不确定我是否理解您的问题 - 您是在问您的解决方案在架构上是否合理?还是您实际上在代码中遇到错误?关于将城市存储在视图模型中,为什么不创建一个城市模型,将城市存储在数据库中,然后将城市作为原始模型上的虚拟属性公开 - 这样你就可以保留“数据”(即城市) 在它所属的数据库中。
  • 是的,我问的是它在架构上是否正确,有 30 多个选择列表和 400 多个文本值,所以我问哪种方式存储在 dbase 或 viewmodel 中更准确?跨度>

标签: c# asp.net asp.net-mvc asp.net-mvc-3


【解决方案1】:

如果我是你,我应该为 SelectList 使用这样的字典键/显示名称:

一个静态成员(因为它是静态的......):

static Dictionary<int, string> CitiesDict = new Dictionary<int, string>()
    {
        { -1 , "--Select One---"},
        { 0 ,"Chicago"},
        { 1 ,"New York"},
        { 2 ,"Zimbabwe"},
    };

下拉菜单的一个属性:

public SelectList Cities { get; set; }

像这样在构造函数中初始化:

Cities = new SelectList(CitiesDict , "Key", "Value", -1);

然后在视图中进行编辑:

@Html.DropDownListFor(model => model.Property.City, Model.Cities) 

用于显示:

@(CitiesDict.ContainsKey(Model.City) ? CitiesDict[Model.City] : "")

【讨论】:

  • 我会尝试,它比我使用它的方式更简单,因为我需要编写很多属性。
  • 它工作了,但是可以为空的属性有问题,所以我要问另一个问题
【解决方案2】:

我还没有使用过 Razor 语法(还在 MVC2 上),但我认为这部分是错误的:

@Html.DropDownListFor(model => model.Property.City,
        new SelectList(Model.Cities,"Value","Text"))

您需要告诉视图引擎要使用哪些值填充 select 列表(value 属性和与 option 元素关联的文本),但我不知道正确的 MVC3 语法来帮助您修理它。希望其他人可以...

【讨论】:

  • 我不认为在视图或视图模型上填充有问题,这也是我的观点,代码通过这种方法运行良好,
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-12
相关资源
最近更新 更多