【问题标题】:How to display selected button as Label如何将选定的按钮显示为标签
【发布时间】:2018-07-24 23:09:43
【问题描述】:

我有多年的按钮。喜欢

2018 2017 2016 2015

我正在使用for 循环将年份作为按钮。

索引视图

@model List<MyRecord.Models.RecordList>



var year = DateTime.Now.Year;
for (var i = year; i > 2012; i--)
{
    var j = @i - 1;
    <div class="col-md-1 ">
        @Html.ActionLink(i.ToString(), "MyPage", new { i = i })
    </div>
}
<h3>@ModelYear.Year</h3>
@foreach (var groupMonth in Model.Records.GroupBy(recordLists => new { recordLists.date.Value.Year, recordLists.date.Value.Month }))
{
    <h3 class="monthHeader"> @System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(groupMonth.Key.Month)</h3>
    foreach (var recordLists in groupMonth)
    {
        <div class="row">
            @Html.Partial("_PartialView", recordList)
        </div>
    }
}

控制器

public ActionResult Archives(int i = 0)
{
    var recordLists = new List<RecordList>();

    if(i == 0)
        recordLists = _db.recordlists
            .Where(p => p.date.Value.Year == DateTime.Now.Year)
            .OrderByDescending(p => p.date)
            .ToList();
    else
        recordLists = _db.recordlists
            .Where(p => p.date.Value.Year == i)
            .OrderByDescending(p => p.date)
            .ToList();

     return View(new ModelYear{Records = recordLists, Year = i});
}

型号:

命名空间 MyRecord.Models

{

using System;
using System.Collections.Generic;

公共部分类 RecordList {

    public int id { get; set; }
    public string title { get; set; }
    public Nullable<System.DateTime> date { get; set; }
}

public class ModelYear
{
    public int Year { get; set; }

    public List<RecordList> Records { get; set; }
}

}

当我点击任何年份时,我会根据月份显示该年份的记录。我能够得到月份名称,而不是年份。我的问题是我需要将所选年份显示为标签或标题;如果我点击 2016,我应该会看到如下内容:

**2016**
Jan
record 1

record 2

如何显示点击的年份?

【问题讨论】:

    标签: c# asp.net-mvc


    【解决方案1】:

    为什么不将它包含在 Model 类中:

    public class Model
    {
        public int Year {get;set;}
    
        public List<RecordList> Records {get;set;}
    }
    

    然后就可以在控制器中设置了:

    public ActionResult Archives(int i = 0)
    {
    
        var recordLists = new List<RecordList>();
    
          if(i == 0)
              recordLists = _db.recordlists.Where(p => p.date.Value.Year == DateTime.Now.Year)
                              .OrderByDescending(p => p.date).ToList();
          else{
              recordLists = _db.recordlists.Where(p => p.date.Value.Year == i).OrderByDescending(p => p.date).ToList();
          }
    
          return View(new Model{Records = recordLists, Year = i});
    }
    

    并在视图中显示:

    <h1>@Model.Year</h1>
    
    @foreach (var groupMonth in Model.Records.GroupBy(recordLists => new { recordLists.date.Value.Year, recordLists.date.Value.Month }))
            {
                <h3 class="monthHeader"> @System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(groupMonth.Key.Month)</h3>
                foreach (var recordLists in groupMonth)
                {
                    <div class="row">
                        @Html.Partial("_PartialView", recordList)
                    </div>
                }
            }
    

    【讨论】:

    • 我按照你的建议修改了我的代码,但我得到了 System.InvalidOperationException。请看我编辑的代码
    猜你喜欢
    • 2013-07-05
    • 2011-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-01
    • 2023-03-09
    相关资源
    最近更新 更多