C#列出对象显示和筛选输入dotnet mvc

C#列出对象显示和筛选输入dotnet mvc,c#,asp.net-mvc,C#,Asp.net Mvc,我已经试着这样做了一段时间,急需一些帮助。 我在mac和dotnet mvc上安装了新的visual studio。我已经创建了一个简单的应用程序,但根本无法解决这个问题。我刚接触过点网MVC,所以这是问题的一部分。我还不熟悉术语,但一直在阅读文档,试图弄明白这一点,但没有用 这是我的控制器: using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using Sys

我已经试着这样做了一段时间,急需一些帮助。 我在mac和dotnet mvc上安装了新的visual studio。我已经创建了一个简单的应用程序,但根本无法解决这个问题。我刚接触过点网MVC,所以这是问题的一部分。我还不熟悉术语,但一直在阅读文档,试图弄明白这一点,但没有用

这是我的控制器:

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using softwareversion.Models;

namespace softwareversion.Controllers
{
    public class SoftwareController : Controller
    {
        public IActionResult Index()
        {
            return View();
        }

        public IActionResult Data()
        {
            return View("Index");
        }

    }
}
这是我的模型:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace softwareversion.Models
{
    public class Software
    {
        public string Name { get; set; }
        public string Version { get; set; }
    }
}
以下是我的看法:

@model IEnumerable<softwareversion.Models.Software>
@{
    ViewData["Title"] = "Search Versions";
}
<div class="container">
    <div class="row">
        <div class="col-md-6">
            <h2>@ViewData["Title"]</h2>
        </div>
        <div class="col-md-6">
            <form method="get" action="" class="">
                <div class="input-group">
                    <input class="form-control" type="text" />
                </div>
            </form>
        </div>
    </div>
</div>


<table class="table">

    <tr>
        <td>
            {{List.Name}}
        </td>
        <td>
            {{List.Version}}
        </td>
    </tr>


</table>


由于代表性较低,暂时无法发表评论,因此将其作为答案发布。使用Robert Mckee的控制器代码解析搜索字符串;我认为所缺少的只是将结果返回到作为收费表的视图中:

public IActionResult Index(string versionSearch)
    {
        if (versionSearch != null)
        {
            var model = FakeManager.GetAllFake();
            char[] trim = { '.', ' ', '\'' };
            versionSearch = versionSearch.Trim(trim);

            var compare = new Version(versionSearch);
            var result = model.Where(v => Version.Parse(v.Version.Trim(trim)) >= compare);

            return View(result.ToList());
        }
        else
        {
            var model = FakeManager.GetAllFake();
            return View(model.ToList());
        }
    }
这是我使用的视图代码,但它又非常相似:

@model IEnumerable<[YourProjectNameHere].Models.Fake>
@{
    ViewData["Title"] = "Search Versions";
}
<div class="container">
    <div class="row">
        <div class="col-md-6">
            <h2>@ViewData["Title"]</h2>
        </div>
        <div class="col-md-6">
            <form method="get" action="" class="">
                <div class="input-group">
                    <input class="form-control" type="text" />
                </div>
            </form>
        </div>
    </div>
</div>
@using (Html.BeginForm())
{
    <p>
        Search by Version:
        @Html.TextBox("VersionSearch")
        <input type="submit" value="Search" />
    </p>
}

    <table class="table">
    <tr>
        <td>
            @foreach (var item in Model)
            {
                @item.Name
                <br />
            }
        </td>
        <td>
            @foreach (var item in Model)
            {
                @item.Version
                <br />
            }
        </td>
    </tr>
</table>
@model IEnumerable
@{
ViewData[“Title”]=“搜索版本”;
}
@ViewData[“标题”]
@使用(Html.BeginForm())
{

按版本搜索:
@Html.TextBox(“VersionSearch”)

} @foreach(模型中的var项目) { @项目名称
} @foreach(模型中的var项目) { @项目.版本
}
过滤时,它现在排除低于搜索字符串的版本号,同时包括更高的版本号(也针对次要版本号和修补程序号进行测试):

不确定你的问题是什么,但你可能想看看课堂。它提供了版本和操作的能力。我的问题是如何从软件的角度来理解这一点。我不明白这个部分。我是dotnet的超级noob,你需要用maskah什么?任何代码帮助示例都链接了soi可以阅读的解决方案,并完成此操作吗?@Chris你能在这里给我留言吗?我想我知道如何问一个更好的问题来得到这个问题的答案。谢谢
My controller is now giving an error when I search:
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using WebApplication2.Models;


namespace WebApplication2.Controllers
{
    public class SoftwareController : Controller
    {
        public IActionResult Index()
        {
            var softwares = SoftwareManager.GetAllSoftware();
            return View(softwares);
        }

        public IActionResult GetFilteredVersion(string filter = "")
        {
            var softwares = SoftwareManager.GetAllSoftware();
            char[] charsToTrim = { '.', ' ', '\'' };

            if (string.IsNullOrEmpty(filter))
                return View(softwares);

            var Result = softwares.Select(o => new { Version = Version.Parse(o.Version), original = o });

            if (filter == "")
                filter = "0.0.0";
            else
                filter = filter.Trim(charsToTrim).Replace(".", "0");

            var compareVersions = Version.Parse(filter);
            var greaterVersions = Result.Where(o => o.Version >= compareVersions);


            var filtered = Result.Where(a => a.Version > compareVersions).Select(o => o.original);
            return View(filtered);

        }

    }
}
public IActionResult Index(string versionSearch)
    {
        if (versionSearch != null)
        {
            var model = FakeManager.GetAllFake();
            char[] trim = { '.', ' ', '\'' };
            versionSearch = versionSearch.Trim(trim);

            var compare = new Version(versionSearch);
            var result = model.Where(v => Version.Parse(v.Version.Trim(trim)) >= compare);

            return View(result.ToList());
        }
        else
        {
            var model = FakeManager.GetAllFake();
            return View(model.ToList());
        }
    }
@model IEnumerable<[YourProjectNameHere].Models.Fake>
@{
    ViewData["Title"] = "Search Versions";
}
<div class="container">
    <div class="row">
        <div class="col-md-6">
            <h2>@ViewData["Title"]</h2>
        </div>
        <div class="col-md-6">
            <form method="get" action="" class="">
                <div class="input-group">
                    <input class="form-control" type="text" />
                </div>
            </form>
        </div>
    </div>
</div>
@using (Html.BeginForm())
{
    <p>
        Search by Version:
        @Html.TextBox("VersionSearch")
        <input type="submit" value="Search" />
    </p>
}

    <table class="table">
    <tr>
        <td>
            @foreach (var item in Model)
            {
                @item.Name
                <br />
            }
        </td>
        <td>
            @foreach (var item in Model)
            {
                @item.Version
                <br />
            }
        </td>
    </tr>
</table>