【发布时间】:2021-05-08 21:20:20
【问题描述】:
在我的视图中,我有一个用户上传的集合,并且我添加了一个带有操作链接的组合框来刷新视图以选择新的排序顺序:
@model IEnumerable<FunPetPics.Models.PetPhotoModel>
@{
ViewData["Title"] = "Index";
}
<p>
<a asp-action="UploadPhoto">Upload Photo</a>
</p>
@if (Model == null || !Model.Any())
{
<p>Your uploads will be displayed here</p>
}
else
{
<div class="row">
<div class="col-md-4">
<h6>Order by:</h6>
<div class="form-group">
<input type=text list=sortOrder class="list">
<datalist id=sortOrder>
<option>@Html.ActionLink("Newest", "Index", new { sortOrder = "Newest" })</option>
<option>@Html.ActionLink("Oldest", "Index", new { sortOrder = "Oldest" })</option>
<option>@Html.ActionLink("Cutest", "Index", new { sortOrder = "Cutest" })</option>
<option>@Html.ActionLink("Funiest", "Index", new { sortOrder = "Funiest" })</option>
<option>@Html.ActionLink("Most Awsome", "Index", new { sortOrder = "Most Awsome" })</option>
</datalist>
</div>
</div>
</div>
<br />
<div class="card-columns">
@foreach (var upload in Model)
{
<div class="card">
<img class="card-img-top" src="@("~/UploadedPhotos/"+ upload.ImageName)" asp-append-version="true">
<div class="card-body">
<h4 class="card-title">@upload.Title</h4>
<h6 class="card-subtitle mb-2 text-muted">@upload.PetName</h6>
<p class="card-text">@upload.DateUploaded</p>
<p class="card-text">@upload.Description</p>
<p class="card-subtitle">Ratings:</p>
<p class="card-text">
Cute:@upload.AverageCutenessRating/5<br />
Funny:@upload.AverageFunnynessRating/5<br />
Awsome:@upload.AverageAwsomnessRating/5<br />
</p>
</div>
</div>
}
</div>
}
在我的控制器中,我使用 switch 语句获取用户的上传列表,该语句根据 sortOrder 参数更改顺序,然后返回带有模型的视图:
public IActionResult Index(string sortOrder)
{
//get the current logged in user and their collection of uploads from the database context
var uploads = GetLoggedInUser().Uploads;
if (uploads == null || !uploads.Any())
{
return View();
}
switch (sortOrder)
{
case "Newest":
uploads.OrderByDescending(u => u.DateUploaded);
break;
case "Oldest":
uploads.OrderBy(u => u.DateUploaded);
break;
case "Cutest":
uploads.OrderByDescending(u => u.AverageCutenessRating)
.ThenByDescending(u => u.DateUploaded);
break;
case "Funniest":
uploads.OrderByDescending(u => u.AverageFunnynessRating)
.ThenByDescending(u => u.DateUploaded);
break;
case "Most Awsome":
uploads.OrderByDescending(u => u.AverageAwsomnessRating)
.ThenByDescending(u => u.DateUploaded);
break;
default:
sortOrder = "Newest";
uploads.OrderByDescending(u => u.DateUploaded);
break;
}
return View(uploads.ToList());
}
第一个问题:从菜单中选择一个项目并没有点击超链接,它只是从列表中删除了其他项目
第二个问题:尝试在 URL 中使用 localhost:44316/UserUploads?sortOrder="Oldest" 手动导航并刷新页面时,控制器中的 sortOrder 为空,因此顺序不会改变
【问题讨论】:
标签: c# asp.net-core model-view-controller razor