2016-10-05 2 views
1

다양한 튜토리얼이나 단순히 샘플 프로젝트에서 읽은 컨트롤러는 ViewBag를 사용하여 페이지에 누적 될 내용을 저장합니다.컨트롤러 속성을 HTML로 가져 오면 모든 것이 뷰 백에 포함됩니까?

컨트롤러에 그냥 ViewBag.AnythingIWant = "Foo";을 입력하면 HTML로 렌더링됩니다. 분명히 제목과 다양한 텍스트를 위해 샘플 프로젝트에서 수행 된 작업입니다.

하지만 대부분의 텍스트는 HTML에 하드 코딩되어 있으므로 분명히 원하지 않습니다. Xamarin (모바일 개발)의 C#이나 MVC에 익숙하지 않다는 것을 고려할 때, 나는이 사실을 아주 빨리 파악해야만한다고 생각하지만, 그렇지 않습니다. 누군가 내게 다음과 같이 명확하게 설명해 줄 수 있습니까?

내 은 ViewModel (대부분 업무 수행)을 알고 있고 그 사람은 Model을 사적으로 사용합니다. 나는 UI의 마지막 레이어가되도록 컨트롤러 (iOS dev)에서 사용되었고, 컨트롤러 내에서는 모든 레이블과 원하는대로 무엇이든 가지고 있으며, ViewModel에서 사용할 수있는 것이 무엇이든 채울 수 있습니다.

여기 컨트롤러에 연결하는 방법을 모른다는 HTML 레이어가 있습니다.

저는 입니다.은 ViewBag에 모든 것을 넣는 것이 길 일 수 없다고 생각합니다. 누구든지 내가 HTML 안에 적절한 객체를 사용하기 위해 누락 된 부분을 간략하게 나타낼 수 있습니까?

면도기는 내 컨트롤러에 공개적으로 추가 어떤 생각, 나를 혼란 무슨 수, 나는

@MyProperty 내가이 꽤 광범위한 질문 알고하지만 난 단지 그리워 알고 사용 관련 HTML에서 찾을 수 있습니다

지식의 작은 조각은 모든 것을 잠금 해제합니다.

+0

는 그냥보기에보기 모델을 전달합니다. https://www.asp.net/mvc/overview/older-versions/mvc-music-store/mvc-music-store-part-3 –

+0

보기 모델이 있다면 (해야하는), 그러면 절대로 안됩니다. 'ViewBag'을 사용할 필요가 있습니다. –

+0

'View' 결과를 반환 할 때 모델 객체를 전달할 수 있습니다. 이는 HTML을 렌더링하기 위해 뷰에서 사용되는 모델이 될 것입니다. –

답변

2

주석에서 언급했듯이 렌더링 할 뷰에 ViewModel을 전달하십시오! asp.net의 MVC에서 예상대로 컨트롤러

public ActionResult Index() { 
    var viewModel = new MyViewModel { Name = "some string" }; 
    return View("Index", viewModel); 
} 

Index.cshtml

@model MyViewModel @* Tell Razor which ViewModel to expect *@ 
@{ string name = Model.Name; } 
+0

고마워요 :) 다른 사람들에게 말했듯이, 뷰를 반환 할 때 뷰 모델을 매개 변수로 전달해야한다는 것을 알지 못했습니다. 이제는 모두 의미가 있습니다! –

관련 문제