Базовый HTML.DropDownListFor - PullRequest
       0

Базовый HTML.DropDownListFor

0 голосов
/ 03 декабря 2010

У меня есть модель представления, определенная как

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 голосов
/ 03 декабря 2010

Должно быть:

<%= 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 # принято, чтобы имена классов и имен свойств начинались с заглавной буквы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...