Net6入门MVC的传值的五种方式

MVC从控制器传值到视图一共有五种方式

  1. ViewBag
  2. ViewData
  3. TempData
  4. Session
  5. Model

MVC2用ViewData, MVC3引入ViewBag, ViewBag是用来取代ViewData的升级版
ViewBag的数据只在当前View里面可以访问
TempData是临时数据,读取一次就失效,它可以夸视图访问

1,用VS2022新建一个基于.net6的MVC项目

2,添加一个控制器FirstController如下

public class FirstController : Controller
{
	public IActionResult Index()
	{
		ViewBag.User1 = "张三";
		ViewData["User2"]="李四";
		TempData["User3"]="王五";
		HttpContext.Session.SetString("User4", "赵六");
		object User5 = "田七";
		return View(User5);
	}
}

3,添加对应的视图内容如下

<h1>This is First Index</h1>
<h2>User1=@ViewBag.User1</h2>
<h2>User1=@ViewData["User2"]</h2>
<h2>User2=@TempData["User3"]</h2>
<h2>User4=@Context.Session.GetString("User4")</h2>
<h2>User5=@Model</h2>

这个时候运行会报错,还要在Program.cs引入Session

需要在Program.cs添加如下两句

builder.Services.AddSession();
...
app.UseSession();

PS: Net6的项目没有了Setup.cs这个文件了, 并且Program.cs也是用新的语法写的
最终Program.cs代码如下

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddControllersWithViews();

builder.Services.AddSession(); //添加Session

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/Error");
}

app.UseSession();//启用Session

app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();

运行项目, 打开http://localhost:5224/first/index就可以看到页码上显示的值了

类似这样:

This is First Index
User1=张三
User1=李四
User2=王五
User4=赵六
User5=田七

其它视图注意事项:

@Html.Raw§表示对p不进行HTML编码, 例如:

<li>The item is: @Html.Raw(p)</li>  

控制器可以返回本视图,也可以返回其他视图:
public ActionResult Index()
{
ViewBag.Message_ViewBag = “I am viewbag”;
ViewData[“Message_ViewData”] = “I am viewdata”;

return View(“About”);
}
当我们需要返回指定完全不同目录结构中的视图时,可以这样使用~符号来提供视图的完整路径来返回:
return View(“~/Views/Home/About.cshtml”);

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,在后端的Controller中获取数据并进行分页处理,可以使用PagedList.Mvc库来方便实现分页功能。 在Controller中返回的Model中,需要包含分页信息和当前页的数据。 然后,在前端的视图文件中,引入layui分页插件,然后通过ajax异步请求后端数据,并将数据填充到页面中。 示例代码如下: Controller: ```csharp public ActionResult Index(int? page) { int pageNumber = page ?? 1; int pageSize = 10; List<User> userList = userRepository.GetUserList(); // 分页处理 var pagedList = userList.ToPagedList(pageNumber, pageSize); return View(pagedList); } ``` View: ```html <div id="user-list"> @Html.Partial("_UserList", Model) </div> <div id="pagination"></div> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script src="https://cdn.bootcdn.net/ajax/libs/layui/2.6.9/layui.all.min.js"></script> <script> layui.use(['laypage'], function () { var laypage = layui.laypage; // 初始化分页 laypage.render({ elem: 'pagination', count: @Model.TotalItemCount, limit: @Model.PageSize, curr: @Model.PageNumber, jump: function (obj, first) { // 首次不执行 if (!first) { // 异步请求后端数据 $.get('@Url.Action("Index")', { page: obj.curr }, function (data) { $('#user-list').html(data); laypage.render({ elem: 'pagination', count: @Model.TotalItemCount, limit: @Model.PageSize, curr: obj.curr }); }); } } }); }); </script> ``` 其中,_UserList是一个局部视图文件,用于展示每页的数据。在laypage.render函数中,需要传入count、limit、curr三个参数,分别表示总数据量、每页数据量和当前页码。在jump回调函数中,需要异步请求后端数据,并将数据填充到页面中。最后,再次调用laypage.render函数,更新分页组件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值