나는 정말 부끄럽다. 정말 간단하다.하지만 나는 그저 작동하지 않는다.viewdatadictionary (mymodel)를 mvc 뷰로 전달할 수 있습니까? 어떻게 접근 할 수 있습니까?
나는 컨트롤러에서이 같은 ViewDataDictionary을 만들었습니다
public ActionResult Index()
{
var recipient = new Recipient() {
FullName = "John Brown",
Company = "FP",
Email = "[email protected]"
};
ViewData = new ViewDataDictionary(recipient);
UserMailer.OnEventBook().Send();
return View();
}
하지만 뷰의 데이터에 액세스하는 방법을 작동하지 않을 수 있습니다.
@ViewData["FullName"]
@ViewData.recipient["FulName"]
@ViewData[recipient.FullName]
@Model.FullName
@recipient.FullName
을 ... 유사한 조합의 수 :
나는 시도했습니다. 아무도 올바른 방향으로 나를 가리킬 수 있습니까?
업데이트
난 그냥 사용 ViewBag 또는을 ViewData [ "받는 사람"]를 통해 전달할 수 실현. 그러나 나는 그것을하는이 방법에 대해 궁금합니다.
다음은 docs for MvcMailer에서 왔으며 작성한 사람이 그의 물건을 알고있는 것으로 보이므로 데이터를 전달하는 올바른 방법이라고 생각했습니다.
var comment = new Comment {From = me, To = you, Message = "Great Work!"};
ViewData = new ViewDataDictionary(comment);
업데이트 2
도현, 내가 잘못되었다.
MvcMailer는 작업 내에서 작업을 호출합니다. 하위 작업 (위의 코드에서 OnEventBook())에서 ViewData를 설정해야합니다. 당신이보기가 강하게을 사용하는 특정 개체를 사용하려면 어쨌든
@((Recipient)ViewData["Recipient"]).FullName
: 다음 코드를 사용하여보기에 그런
var recipient = new Recipient() {
FullName = "John Brown",
Company = "FP",
Email = "[email protected]"
};
ViewData["Recipient"] = recipient;
:
감사 같은 것입니다. 그것은 다른 방법으로도 가능합니까? 질문을 세부 정보로 업데이트하십시오. –
내 대답에 업데이트를 확인하십시오. – ssimeonov
'@ ViewData.Model.FullName'은 null 참조 예외에서 런타임 바인딩을 제공합니다. 뷰에'@ model' 지시어를 추가하면 표준 null ref exp를 얻습니다. 하지만 ViewData로 전달되기 때문에 필요하지 않습니다. 맞습니까? –