c# - 如何将数据从控制器传递到 ASP.NET MVC 中的视图
问题描述
我尝试将数据从登录视图传递到 Empinput 视图。我尝试使用 Http 会话不适用于数据传递。
我收到了这个错误:
“HttpSessionStateBase'不包含'SetString'的定义,并且找不到接受'HttpSessionStateBase'类型的第一个参数的可访问扩展方法'SetString'”。
我把代码放在下面请告诉我如何传递数据?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using DemoEmployee.Models;
using System.Web.Security;
using System.Web.UI.WebControls;
using Microsoft.AspNetCore.Http;
public ActionResult Login(Models.Member model)
{
var userr = db.User.Where(x => x.UserName == model.UserName && x.Password == model.Password).FirstOrDefault();
name = model.UserName;
if (userr == null)
{
ModelState.AddModelError("", "Invalid username and password");
FormsAuthentication.SetAuthCookie(model.UserName, false);
}
else
{
// This is not working for passing data to another view
HttpContext.Session.SetString("Username", model.UserName.ToString());
return RedirectToAction("Empinput", "Empinput");
}
return View();
}
[HttpPost]
public ActionResult Empinput(Employee model)
{
Member member = new Member();
Login sdm = new Login();
// this is not working for passing data from Login view
String name = HttpContext.Session.GetString("Username");
}
解决方案
将值从控制器传递到视图有不同的方法。
- 临时数据
在您的控制器功能中,您可以初始化一个 TempData,然后在您的视图中使用它。但它只会保存一个请求中的值。例如,
TempData["UserName"] = model.UserName;
然后在视图中,您可以将值存储到变量中然后显示变量值,也可以直接显示 tempData 值。例如,
var UserName = TempData["UserName"] as string;
- 查看数据
ViewData 的行为和操作也像 TempData
ViewData["UserName"] = model.UserName;
然后在视图中使用它。
- 查看包
在控制器中,
ViewBag.UserName = model.UserName
在 View 中,您可以将其用作
@ViewBag.UserName
- 您可以使用简单会话
Session["UserName"] = model.UserName;
- 如果您的模型有更多项目需要传递给视图,您也可以使用视图模型,然后将整个模型传递给视图。
我希望这可以帮助你!一切顺利。
推荐阅读
- python - 从 numpy 数组中解复用值
- mysql - 为什么在 SELECT DISTINCT 查询中出现“重复条目”错误?
- php - 返回页面后php动态选择选项设置为默认值(表单提交后重置选择选项)
- python - 加载回文件后,matplotlib 图中的隐藏轴可见
- safari - Mac Safari (12 / 13) 会在 5-10 分钟后自动失去声音
- c - 为什么我的代码没有生成 1 到 N 之间的随机数字序列?不产生文件。我的代码有什么错误?我究竟做错了什么?
- python - 错误 builtins.TypeError:需要一个类似字节的对象,而不是使用 pickle 的“str”
- sql-server - 插入其中值不为空的带有选择语句
- excel - Excel VBA 调试
- excel - 如何将日期转换为 YYYY-MM 格式以便进行 SUMIFS?