Я пытался сделать это какое-то время, и мне очень нужна помощь. Я установил новую визуальную студию на моем Mac, а также dotnet mvc. Я создал простое приложение и не могу понять это вообще. Я новичок в точках чистой 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>
Вот остаток кода, который мне прислали:
public class Fake {
public string Name { get; set; }
public string Version { get; set; }
}
public static class FakeManager {
public static IEnumerable < Fake > GetAllFake() {
return new List < Fake > {
new Fake {
Name = “Hello World”,
Version = "13.2.1."
},
new Fake {
Name = "Hello World",
Version = "1.7.1"
},
new Fake {
Name = "Hello World",
Version = "8.1.13"
},
new Fake {
Name = "Hello World",
Version = "0.0.5"
},
new Fake {
Name = "Hello World",
Version = "2.6"
},
new Fake {
Name = "Hello World",
Version = "2017.0.1"
},
new Fake {
Name = "Hello World",
Version = "2019.1"
},
new Fake {
Name = "Hello World",
Version = "1.35"
},
new Fake {
Name = "Hello World",
Version = "0.7"
}
};
}
}
Остальные инструкции были мне отправленыОни попросили нас создать простой веб-сайт, на котором пользователи могут вводить номер версии и получать список программных продуктов, которые превышают введенную ими версию.
Версии программного обеспечения сохраняются в виде строки вформат [основная версия]. [дополнительная версия]. [патч]. Вы можете увидеть версии, такие как «2», «1.5» или «2.12.4» (это также допустимые входные данные пользователя). Период используется только в качестве разделителя и не представляет десятичную точку - 1,5 не означает полтора.
"2" == "2.0" == "2.0.0"
"2" < "2.0.1"
"2" < "2.1"
"2.0.1" < "2.1.0"
К счастью для вас, они сохранили список программного обеспечения как объект C # (предоставлен выше), который вы можете просто вставить в свой код - не нужно вызывать базу данных или службу REST.
ОБНОВЛЕНИЕ: я отредактировал свой контроллер, и теперь я получаю эту ошибку
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);
}
}
}