首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将选定的数据从视图传递给控制器,然后再从控制器返回到视图

如何将选定的数据从视图传递给控制器,然后再从控制器返回到视图
EN

Stack Overflow用户
提问于 2018-07-24 15:23:05
回答 1查看 195关注 0票数 1

我试图在视图中显示选定的值。在我看来,我选择了一年,并将这个值传递给控制器来过滤我的记录。再一次,我需要将这个值传递给我的视图,以显示我选择的值或年份。我不介意过滤我的记录。我的问题是我需要显示我选择的年份。我该怎么做?

当我运行我的应用程序时

'System.Collections.Generic.List`1MyRecords.Models.RecordsList'.:传递到字典中的模型项的类型是“MyRecords.Models.Model年份”,但是该字典需要一个类型为System.InvalidOperationException的模型项

赫尔是我的密码。

索引视图

代码语言:javascript
复制
@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>
}

//这里显示了我选择的年份,比如2010年和2010年的记录

代码语言:javascript
复制
<h3>@ModelYear.Year</h3> 
@foreach (var groupMonth in Model.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>
    }
}

控制器

代码语言:javascript
复制
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

{

代码语言:javascript
复制
using System;
using System.Collections.Generic;

公共部分类RecordList {

代码语言:javascript
复制
    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; }
}

}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-24 18:20:49

以评论为基础

1)更改@模型列表上的视图模型@模型列表

2)新模型包含了数据年和记录列表,你可以把你想要的东西放进去。

您只需记住,模型是分层的,而不是平面的。

代码语言:javascript
复制
foreach (var groupMonth in Model.RecordList.GroupBy(recordLists => new { recordLists.date.Value.Year, recordLists.date.Value.Month }))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51502349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档