Late binding issue with MVC3 ViewBag in VB.NET
Asked Answered
J

2

10

I'm trying out MVC Scaffolding in a VB.NET MVC3 project and running into an issue with late binding with Option Strict set on (and I want it on).

This works in C#:

public ActionResult Create()
{
    ViewBag.PossibleTeams = context.Teams;
    return View();
}

but the virtually the same code in VB.NET:

Public Function Create() As ActionResult
    ViewBag.PossibleTeams = context.Teams
    Return View()
End Function

causes the compiler error Option Strict On disallows late binding. I took a look at the documentation here: http://msdn.microsoft.com/en-us/library/system.web.mvc.controllerbase.viewbag(VS.98).aspx but it wasn't very helpful.

I notice that a new empty application in C# uses the ViewBag in the HomeController but the VB.NET version uses ViewData, so maybe this is a VB.NET limitation.

Jana answered 18/2, 2011 at 14:36 Comment(1)
I just created a new VB.Net project using the Internet Application template for MVC4 RC and it used the ViewBag property. It did not build until I replaced it with ViewData.Owens
U
15

This is not a Trust issue. Option Strict On disallows late binding. In VB.Net, use the ViewData object instead and maintain your Option Strict On setting.

Uppish answered 25/2, 2011 at 3:51 Comment(1)
Given the templates used ViewData I reckoned this must be the case so that's what I've been using.Jana
F
0

The mayor problem with ViewBag in VB (and the reason why the VB template uses ViewData) is that the VB binder does not work with things typed as dynamic in medium trust. Try setting your app to full trust.

Fennell answered 18/2, 2011 at 16:33 Comment(1)
I changed the web.config file to Full Trust but it's not making any difference to the compile time error. I haven't had trust issues before, so this would be a new avenue for me.Jana

© 2022 - 2024 — McMap. All rights reserved.