Asp.net mvc 2 基本HTML.DropDownListFor

Asp.net mvc 2 基本HTML.DropDownListFor,asp.net-mvc-2,Asp.net Mvc 2,我将viewmodel定义为 public class linkVM { public AL.Common.Content.Object.PageIndex[] pages{ get; set; } public string sPageId { get; set; } } 以我正在使用的strogly类型的形式 n.pages,新选择列表(Model.pages,“PageId”,“ShortName”,Model.sPageId));%%> 我在SelectList(Mod

我将viewmodel定义为

public class linkVM
{
    public AL.Common.Content.Object.PageIndex[] pages{ get; set; }
    public string sPageId { get; set; }
}
以我正在使用的strogly类型的形式

n.pages,新选择列表(Model.pages,“PageId”,“ShortName”,Model.sPageId));%%>

我在SelectList(Model.pages)上得到一个编译错误,该部分显示 “Model”与声明“System.Web.Mvc.ViewPage.Model”冲突

很明显,我缺少一大块基本知识——有人能给我点化一下吗

谢谢

应该是:

<%= Html.DropDownListFor(
    n => n.sPageId, 
    new SelectList(Model.pages, "PageId", "ShortName")
) %>
此外,呈现此视图的控制器操作需要传递正确的模型:

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#中的惯例也是让类名和属性名以大写字母开头。

My page指令包含:Inherits=“System.Web.Mvc.ViewPage”%%我已经做了您建议的更改,但仍然会得到相同的错误如果您完全按照我的代码片段中的操作,则不会出现任何错误。请尝试使用我建议的代码创建一个包含单个操作的新控制器,并创建一个仅包含对帮助器的调用的简单视图。另外,请验证您是否没有名为
Model哪一个可能会发生冲突。好的-我正在转换它,我的代码仍然包装在一个HTML.BeginForm中-如果我删除它,它似乎工作正常-这是您所期望的吗?
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);
}