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;   }