【问题标题】:model size check模型尺寸检查
【发布时间】:2011-06-08 08:31:35
【问题描述】:

我已经成功地将查询结果传递给我的视图。

不幸的是,当结果模型列表有 0 个条目时,ASP/Razor 代码在 foreach 中停止。

@foreach (var action in (List<LemonTrader.Models.Lemon>)ViewData["lemons"]) {
    <tr>
        <td>
            @Html.Encode( action.acidity)

如果没有条目,则说明空异常。

处理列表为空的情况的最佳方法是什么?

我想我可以放入一个代码块并让它执行一个 if/then 分支。这似乎有点偏离@foreach 优雅的剃须刀单线。

我想我可以在控制器中放入空白的东西,然后只显示空白。

这些似乎不是非常优雅的方法。

有更好的想法吗?

【问题讨论】:

  • 这很有趣......出于某种原因,它现在似乎可以优雅地处理它。我认为我没有改变任何东西......

标签: asp.net entity-framework asp.net-mvc-3 razor


【解决方案1】:

尝试下一步:

  1. 在 Models 文件夹(例如 LemonsView.cs)中创建附加模型(viewmodel)并放在那里:

    public class LemonList { public IQueryable<Lemon> AllLemons { get; set; } }

  2. 创建一个控制器(LemonController.cs)

    public ActionResult Lemons
    {
    var model = new LemonList();
    var lemons = db.Lemon;

        model.AllLemons = lemons;
        return View(model);
    }`
    
  3. 在视图中:

    @using LemonTrader.Models.AllLemons
    foreach(var item in Model.LemonList){
    @item.Some
    }

如果结果为空,则为空白页

玩得开心!

【讨论】:

  • 谢谢!我想我会把它添加到我的控制器类中。编写类来携带其他类对我来说不够敏捷。
  • 不客气! :) 您还可以检查控制器是否为空模型,如果为真则显示另一个视图(例如 404 页面)。只需将 return 语句更改为: return model == null ?视图(模型):视图(“404view”);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-08
  • 2012-03-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多