2017-05-04 9 views
-1

List가 들어있는 ViewBag에서 MVC5의 TextBox 값을 설정하려면 어떻게해야합니까? 당신이 Viewbag.photos 내 목록입니다 볼 수 있습니다 내가 photo.id 내 텍스트 상자에 다음 패스의 각 값을 원하는대로 그것은MVC5의 ViewBag 목록에서 TextBox 값 설정 C#

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

    } 

가 그렇게하려고 컨트롤러 오류가 발생합니다.

다른 해결 방법이 있습니까?

+1

ViewModel을 만들어서 ViewBag를 사용하는 대신 전달하십시오. – Milney

답변

2

ViewBag.photosdynamic 개체이기 때문에 이러한 현상이 발생합니다. 컴파일러는 형식을 알 수 없으므로 수동으로 원래 유형으로 변환해야합니다. 보조 노트 (나는 이것이 작동 코드를 방지 할 수 있는지 모르겠지만, 어쨌든 좋은 습관이다), 당신은 또한 조금 너무 많은 @의를 가지고

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

: 예를 들어

에 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) 
} 

당신은 또한 당신의 컨트롤러와 뷰 사이에 데이터를 전달하는 대신 ViewBag의 ViewModels를 사용하는 것이 좋습니다 : 그래서 최종 코드는 다음과 같다됩니다.