2011-11-10 65 views
4

我有我在控制器中创建一个列表:MVC @ Html.DropDownList掌握的SelectList错误ViewBag

 var PayList = new[] { 
     new ListEntry { Id = 1, Name = "" }, 
     new ListEntry { Id = 2, Name = "Yes" }, 
     new ListEntry { Id = 3, Name = "No" } 

     }; 

    ViewBag.PayList = new SelectList(PayList, "Id", "Name"); 

在视图中我有以下几点:

@Html.DropDownList("Pay", new SelectList(ViewBag.PayList,"Id","Name")) 

当我尝试要显示它,它会显示以下内容: DataBinding:'System.Web.Mvc.SelectListItem'不包含名称为'Id'的属性。不知道为什么这不起作用。

另外我该如何默认值到选择列表。我喜欢将其默认为“是”。我认为有一种方法可以做到这一点从控制器。

回答

6

只需使用

@Html.DropDownList("Pay", ViewBag.PayList) 

在你看来

8

ViewBag.PayList已经是SelectList类型。我不明白了一个道理,以创建SelectList的两倍,因此不应该只是为:

@Html.DropDownList("Pay", ViewBag.PayList) 

@Html.DropDownList("Pay", ViewBag.PayList as SelectList) 

(我从来没有使用ViewBag,所以我不确定您的版本是否是强类型的)。

+1

@ Html.DropDownList(“支付”,ViewBag.PayList为的SelectList)在MVC4 – Niraj

+0

工作对我来说我也可以确认该选项(“支付”,ViewBag.PayList为的SelectList)在为我工作MVC 4,另一个(“支付”,ViewBag.PayList)不适合我,我得到一个错误 –

+1

这是一个在MVC 4 +中使用,否则你会得到错误“扩展方法不能动态调度” 。 – awrigley

0
Try this Way: 
<div id="divmsg" style="color: green; font-weight: bold"> 
    @ViewBag.Msg 
</div> 
<div id="divmsg2" style="color: red; font-weight: bold">@ViewBag.Msg2</div> 
<div id="quality" style="width: 80%;" align="center"> 
    <input type="hidden" value="@ViewBag.ProjectId" id="ProjectId_" class="projectId"/> 
    <input type="hidden" value="@ViewBag.ProjectName" id="ProjectName_" class="projectName"/> 
    <input type="hidden" value="@ViewBag.UserId" class="UserId_" id="UserId"/> 
    <input type="hidden" value="@ViewBag.TempId" class="TempId_" id="TempId" /> 
    <div class="toggle-contents"> 
     <table width="100%" id="qualitygoal"> 
      <tr> 
       <td class="even" align="left"> 
        @Html.Label("Project Id") 
       </td> 
       <td class="even" align="left"> 
        @ViewBag.ProjectId 
       </td> 

      </tr> 
      <tr> 

       <td class="projectname" align="left"> 
        @Html.Label("Project Name") 
       </td> 
       <td class="projectname" align="left"> 
        @ViewBag.ProjectName 
       </td> 

      </tr> 
     </table> 

     <table width="100%" id="qualitygoal1" class="tbl"> 
      <tbody> 
       <tr> 
        <th align="center">DestinationColumns</th> 
        <th align="center">SourceColumns</th> 


       </tr> 

       @foreach (var data in Model) 
       { 

        <tr> 
         <td> 
          <span class="spanStatus" id="[email protected]" destinationID = "@data.Destination">@data.Destinationvalue</span> 
          <select class="status" id="[email protected]"> 
           <option value="0">--Select--</option> 
           <option value="4">TICKET ID</option> 
           <option value="5">DESCRIPTION</option> 
           <option value="6">TICKET CATEGERY</option> 
           <option value="7">SEVIORITY/PRIORITY</option> 
           <option value="8">STATUS</option> 
           <option value="9">CREATED DATE</option> 
           <option value="10">CREATED BY</option> 
           <option value="11">ASSIGNED TO</option> 
           <option value="12">ASSIGNED DATE</option> 
           <option value="13">REPSONSE ETA</option> 
           <option value="14">RESOLUTION ETA</option> 
           <option value="15">RESPONSE DATE</option> 
           <option value="16">RESOLUTION DATE</option> 
           <option value="17">ROOT CAUSE/MODULE</option> 
           <option value="18">REOPEN FLAG (Y/N)</option> 
           <option value="19">CLOSE DATE</option> 
           <option value="20">SLA MET (Y/N)</option> 
          </select> 
         </td> 
         <td> 
          <span class="spanSource" id="[email protected]" >@data.Source</span> 
          <input class="Source" id="[email protected]" type="text" value="@data.Source" maxlength="30" /> 
         </td> 

         <td> 
          <table style="width: 50%;"> 
           <tr> 
            <td> 
             <input class="edit" id="[email protected]" type="button" value="Edit" /> 
             <input class="update" id="[email protected]" type="button" value="Update" /> 
            </td> 
            <td class="Gcancle" id="[email protected]"> 
             <input class="gridcancel" id="[email protected]" type="button" value="Cancel" /> 
            </td> 
           </tr> 
          </table> 
         </td> 
         <td> 
          <table style="width: 50%;"> 
           <tr> 
            <td> 
             <input class="delete" id="[email protected]" type="button" value="Delete" /> 
            </td> 
           </tr> 
          </table> 
         </td> 

        </tr> 

       } 
      </tbody> 
     </table> 
    </div> 
    <div align="right"> 
     <input type="button" value="Add New Row" class="Add" /> 

     <input type="button" value="Save" class="saved" /> 
     <input type="button" value="Close" class="cancel" /> 



    </div> 

</div>