C#列出对象显示和筛选输入dotnet mvc
我已经试着这样做了一段时间,急需一些帮助。 我在mac和dotnet mvc上安装了新的visual studio。我已经创建了一个简单的应用程序,但根本无法解决这个问题。我刚接触过点网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
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>