基本HTML.DropDownListFor

时间:2010-12-03 11:03:35

标签: asp.net-mvc-2

我将viewmodel定义为

public class linkVM
{
    public AL.Common.Content.Object.PageIndex[] pages{ get; set; }
    public string sPageId { get; set; }
}

我使用的是一种格式错误的表格

<%Html.DropDownListFor(n => n.pages,new SelectList(Model.pages,“PageId”,“ShortName”,Model.sPageId));%>

我在SelectList上遇到编译错误(Model.pages,部分表示 'Model'与声明'System.Web.Mvc.ViewPage.Model'

冲突

显然我缺少一大堆基础知识 - 请有人启发我吗

感谢

1 个答案:

答案 0 :(得分:0)

应该是:

<%= Html.DropDownListFor(
    n => n.sPageId, 
    new SelectList(Model.pages, "PageId", "ShortName")
) %>

还要确保您的视图是强类型的linkVM类(顶部的@Page指令):

<%@ Page 
    Language="C#" 
    MasterPageFile="~/Views/Shared/Site.Master" 
    Inherits="System.Web.Mvc.ViewPage<AL.MgrSite.ViewModel.content.linkVM>" %>

呈现此视图的控制器操作也需要传递正确的模型:

public ActionResult Index()
{
    var model = new linkVM 
    {
        // TODO: fetch those from your repository
        pages = new[]
        {
            new PageIndex { PageId = "1", ShortName = "name 1" },
            new PageIndex { PageId = "2", ShortName = "name 2" },
            new PageIndex { PageId = "3", ShortName = "name 3" },
        }
    };
    return View(model);
}

C#中的约定也是让类名和属性名以大写字母开头。