C# 从控制器设置视图中文本框的值
我在C# 从控制器设置视图中文本框的值,c#,asp.net-core-mvc,C#,Asp.net Core Mvc,我在视图中有一个输入框,我正试图从我的控制器传递值。 值完全进入了行ViewBag.request\u number=final,但在我看来,它显示的是null public JobsController(AppDbContext context) { string prefix = "D"; string lastPRNo = "D0001"; string number = lastPRNo;
视图中有一个输入
框
,我正试图从我的控制器传递值。
值完全进入了行ViewBag.request\u number=final
,但在我看来,它显示的是null
public JobsController(AppDbContext context)
{
string prefix = "D";
string lastPRNo = "D0001";
string number = lastPRNo;
if (lastPRNo.Length < 3)
{
number = "000" + lastPRNo;
number = number.Substring(number.Length - 3, 3);
}
string final = prefix + number;
ViewBag.request_number = final;
_context = context;
}
ViewBag依赖于ViewData,控制器初始化后将填充ViewData 这使得无法在构造函数中设置ViewBag,因为调用控制器的构造函数时,未设置HttpContext、ControllerContext等的属性。它们仅在调用构造函数并且存在对此对象的有效实例/引用后设置 正如你所看到的 ViewBag代码如下所示:
public dynamic ViewBag
{
get
{
if (_viewBag == null)
{
_viewBag = new DynamicViewData(() => ViewData);
}
return _viewBag;
}
}
在ViewData属性中,您可以看到:
激活控制器后,可以访问此属性,
例如,在控制器操作中或通过重写OnActionExecuting(ActionExecutingContext)
请尝试将获取请求编号的代码移动到
public IActionResult YourView()
{
string prefix = "D";
string lastPRNo = "D0001";
string number = lastPRNo;
if (lastPRNo.Length < 3)
{
number = "000" + lastPRNo;
number = number.Substring(number.Length - 3, 3);
}
string final = prefix + number;
ViewBag.request_number = final;
_context = context; }
public IActionResult YourView()
{
字符串前缀=“D”;
字符串lastPRNo=“D0001”;
字符串编号=lastPRNo;
如果(最后一个PRNO.长度<3)
{
number=“000”+最后一个PRNO;
number=number.Substring(number.Length-3,3);
}
字符串final=前缀+数字;
ViewBag.request_number=最终版本;
_context=context;}
public IActionResult YourView()
{
string prefix = "D";
string lastPRNo = "D0001";
string number = lastPRNo;
if (lastPRNo.Length < 3)
{
number = "000" + lastPRNo;
number = number.Substring(number.Length - 3, 3);
}
string final = prefix + number;
ViewBag.request_number = final;
_context = context; }