如何访问存储在viewdata中的DB记录列?

时间:2014-11-21 07:11:06

标签: asp.net-mvc vb.net asp.net-mvc-4 razor

以下代码运行正常: (在Controller [Visual Basic]中):             昏暗的DivUsers(16)

        For Each did In Divisions
            Dim perm = Perms(did)
            DivUsers(did) = From u In db.VEAUsers Where u.Permission = perm
        Next

(在视图[HTML / RAZOR]中):

@For Each u In ViewBag.DivUsers(did)
    @<option value="@u.UserId">@u.FirstName @u.LastName</option>
    cnt = cnt + 1
Next

但是我被要求使用ViewData而不是ViewBag(因为有EXPLICIT / STRICT OPTION)。

我不确定如何在ViewBag中记录ViewData中的各个记录。也就是说,如何使用ViewData而不是ViewBag重写这行HTML / RAZOR代码?

                @For Each u In ViewBag.DivUsers(did)

由于

1 个答案:

答案 0 :(得分:0)

ViewData是一个字典,所以你想把模型放到你应该写的控制器中的ViewData

ViewData["Users"] = model;

然后在View上你可以获得这样的值:

@For Each u In ViewData["Users"].DivUsers(did)
    @<option value="@u.UserId">@u.FirstName @u.LastName</option>
    cnt = cnt + 1
Next

最佳做法是使用ViewData.Model强类型视图

ViewData.Model = model;

然后查看:

@For Each u In ViewData.Model.DivUsers(did)
    @<option value="@u.UserId">@u.FirstName @u.LastName</option>
    cnt = cnt + 1
Next

但您应该在顶部

指定视图的模型
@model YourModelClass
相关问题