我有5条来自简单选择存储过程的记录。
ID Name
1 RecordOne
2 RecordTwo
3 RecordThree
4 RecordFour
5. RecordFive
要求是一次显示一条记录示例:
记录一次
上一页下一页
两个带有上一个和下一个文本的动作链接或按钮。 如果用户单击“下一步”,则用户将看到
RecordTwo
等,与之前的案例相同。
我的模特
namespace MVCLearning.Models
{
public class VMNews
{
public List<Student> StudentDetails { get; set; }
}
public class Student
{
public int ID { get; set; }
public string Name { get; set; }
}
}
行动
public ActionResult Index()
{
VMNews objnews = new VMNews();
objnews.StudentDetails = db.Database.SqlQuery<Student>("usp_studentdetails").ToList();
return View(objnews);
}
查看
<div>
@foreach (var item in Model.SD.Take(1))
{
<h3>@item.Name</h3>
<h3>@item.Age</h3>
}
@Html.ActionLink("Next", "index", new { Model.SD[0].ID})
@Html.ActionLink("Previous", "index", new { Model.SD[0].ID })
我编写视图的方式是完全错误的,我没有知道如何以及在该视图上写什么以及在View上写什么。
实现这一目标的方法之一。
答案 0 :(得分:2)
将方法改为
public ActionResult Index(int? index)
{
int max = 5; // modify based on the actual number of records
int currentIndex = index.GetValueOrDefault();
if (currentIndex == 0)
{
ViewBag.NextIndex = 1;
}
else if (currentIndex >= max)
{
currentIndex = max;
ViewBag.PreviousIndex = currentIndex - 1;
}
else
{
ViewBag.PreviousIndex = currentIndex - 1;
ViewBag.NextIndex = currentIndex + 1;
}
VMNews objnews = new VMNews();
Student model = db.Database.SqlQuery<Student>("usp_studentdetails")
.Skip(currentIndex).Take(1).FirstOrDefault();
return View(model);
}
请注意,该查询已被修改为仅返回一个Student
,因为这是您在视图中所需的全部内容。此外,如果用户输入的值大于将返回最后一条记录的记录数(我可能实际上想要抛出错误?),我已经说过了。
视图现在需要
@model Student
<h3>@Model.Name</h3>
<h3>@Model.Age</h3>
@if (ViewBag.PreviousIndex != null)
{
@Html.ActionLink("Previous", "Index", new { index = ViewBag.PreviousIndex })
}
@if (ViewBag.NextIndex != null)
{
@Html.ActionLink("Next", "Index", new { index = ViewBag.NextIndex })
}