【问题标题】:How do I access a DB record's column that is stored in viewdata?如何访问存储在视图数据中的数据库记录列?
【发布时间】:2014-11-21 07:11:06
【问题描述】:

以下代码可以正常工作: (在控制器 [Visual Basic] 中): Dim 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 OPTIONs)。

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

                @For Each u In ViewBag.DivUsers(did)

谢谢

【问题讨论】:

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


    【解决方案1】:

    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
    

    【讨论】:

    • 我不确定我是否清楚地理解了这部分:ViewData.Model = model;而且我不确定我是否可以为 View 指定模型(但我当然可以尝试。)
    猜你喜欢
    • 2020-12-03
    • 1970-01-01
    • 1970-01-01
    • 2022-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-30
    • 2019-02-18
    相关资源
    最近更新 更多