我将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'
冲突显然我缺少一大堆基础知识 - 请有人启发我吗
感谢
答案 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#中的约定也是让类名和属性名以大写字母开头。