2011-11-10 64 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>