簡體   English   中英

從MVC5 C#中的ViewBag列表中設置TextBox值

[英]Set TextBox value from ViewBag list in MVC5 C#

如何從包含列表的ViewBag中在MVC5中設置TextBox值? 如您所見,我的列表在Viewbag.photos中 ,我想在我的TextBox中包含photo.id的每個值,然后將其傳遞給控制器

 @foreach (var photo in ViewBag.photos)
     {
            @if (@photo.comment != null)
            {
              <h6>@photo.comment</h6>
            }
            else
            {
              <h6> - </h6>
            }
            @Html.TextBox("photoID", @photo.id)

     }

嘗試這樣做,我得到一個錯誤:

錯誤CS1973“ HtmlHelper>”沒有名為“ TextBox”的適用方法,但似乎具有該名稱的擴展方法。 擴展方法無法進行動態分配。

也許還有另一個解決方法?

這是因為ViewBag.photos是一個dynamic對象。 編譯器無法知道其類型,因此您必須手動將其轉換為其原始類型。

例如:

@Html.TextBox("photoID", (int)photo.id)

作為一個旁注(我不確定這是否會阻止您的代碼正常工作,但還是一個好習慣),您也有太多@ s:引用Visual Studio, once inside code, you do not need to prefix constructs like "if" with "@" 因此,您的最終代碼將如下所示:

 @foreach (var photo in ViewBag.photos)
 {
     if (photo.comment != null)
     {
         <h6>@photo.comment</h6>
     }
     else
     {
         <h6> - </h6>
     }
     @Html.TextBox("photoID", (int)photo.id)
 }

您還應該考慮使用ViewModels而不是ViewBag在控制器和視圖之間傳遞數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM