Asp.net mvc 在foreach循环中获取值

Asp.net mvc 在foreach循环中获取值,asp.net-mvc,linq,entity-framework,Asp.net Mvc,Linq,Entity Framework,我试图列出所有的“Usergroups”,如果“UsergroupPrices”中存在一个值,则在文本框中显示它。但我不知道如何把握价值 <% foreach (var item in Model.Usergroups) { var price = Model.BookingObject.UsergroupPrices.Where(x => x.UsergroupID == item.Usergrou

我试图列出所有的“Usergroups”,如果“UsergroupPrices”中存在一个值,则在文本框中显示它。但我不知道如何把握价值

<% foreach (var item in Model.Usergroups)                                   
   {
    var price = Model.BookingObject.UsergroupPrices.Where(x => x.UsergroupID == item.UsergroupID).Select(x => x.Price);
%>
<tr>
   <td><%= Html.Hidden("UsergroupIDPrice", item.UsergroupID) %><%= item.UsergroupName %>:</td>
   <td><%= Html.TextBox("UsergroupPrice", price) %></td>
</tr>
<% } %>
x.UsergroupID==item.UsergroupID)。选择(x=>x.Price);
%>
:
价格是十进制的,如果用户组没有任何价格,则可能为空

短暂性脑缺血发作


/Lasse

您需要选择一条记录:

var price = Model
    .BookingObject
    .UsergroupPrices
    .Where(x => x.UsergroupID == item.UsergroupID)
    .FirstOrDefault(x => x.Price);
然后您可以测试price是否为null

话虽如此,我必须说你所做的是错误的。获取数据不是视图的责任。这应由控制器完成。控制器应填充视图模型并将此模型传递给视图。此视图模型包含视图所需的所有必要属性,因此您只需在视图中显示它们这样的代码不属于视图


因此,我强烈建议您将此逻辑导出到控制器中,因为现在您违反了MVC模式。

您需要选择一条记录:

var price = Model
    .BookingObject
    .UsergroupPrices
    .Where(x => x.UsergroupID == item.UsergroupID)
    .FirstOrDefault(x => x.Price);
然后您可以测试price是否为null

话虽如此,我必须说你所做的是错误的。获取数据不是视图的责任。这应由控制器完成。控制器应填充视图模型并将此模型传递给视图。此视图模型包含视图所需的所有必要属性,因此您只需在视图中显示它们这样的代码不属于视图


因此,我强烈建议您将此逻辑导出到控制器中,因为您现在正在违反MVC模式。

我怀疑您只是在寻找
Single
或者可能是
SingleOrDefault

var price = Model.BookingObject.UsergroupPrices
                               .Where(x => x.UsergroupID == item.UsergroupID)
                               .Select(x => (decimal?) x.Price)
                               .SingleOrDefault();
(转换为
decimal?
将使
SingleOrDefault
返回null
decimal?
值,如果没有找到匹配项,则返回0。)


请注意,您当前的代码将进行大量的数据库查询,假设这些查询实际上与数据库上下文关联。您可能应该在控制器中执行这些查询,而不是在视图中。。。在控制器中获取所需的所有数据,并以最简单的方式将其放入模型中以供视图显示。

我怀疑您只是在寻找
Single
或可能的
SingleOrDefault

var price = Model.BookingObject.UsergroupPrices
                               .Where(x => x.UsergroupID == item.UsergroupID)
                               .Select(x => (decimal?) x.Price)
                               .SingleOrDefault();
(转换为
decimal?
将使
SingleOrDefault
返回null
decimal?
值,如果没有找到匹配项,则返回0。)


请注意,您当前的代码将进行大量的数据库查询,假设这些查询实际上与数据库上下文关联。您可能应该在控制器中执行这些查询,而不是在视图中。。。获取控制器中所需的所有数据,并以最简单的方式将其放入模型中,以便视图显示。

用户组和用户组价格之间的关系是什么类型的?描述您的实体关系UserGroups和UsergroupPrice之间是什么类型的关系?描述你的实体关系