[英]Set value of a TextBox in View from a Controller
我在View
中有一个input
框,我正在尝试从我的 controller 传递值。 值完全符合ViewBag.request_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;
}
我的View
代码如下。
<div class="form-group col-md-6">
<label asp-for="JobNumber" class="control-label"></label>
<input id="JobNumber" asp-for="JobNumber" value=@ViewBag.request_number class="form-control" type="text" />
<span asp-validation-for="JobNumber" class="text-danger"></span>
</div>
ViewBag 依赖于 ViewData,ViewData 在 controller 初始化后填充。
这使得无法在构造函数中设置 ViewBag,因为在调用 Controller 的构造函数时,未设置 HttpContext、ControllerContext 等的属性。 它们仅在调用构造函数并且存在对此 object 的有效实例/引用后设置。
正如你可以在这里阅读
ViewBag 代码如下所示:
public dynamic ViewBag
{
get
{
if (_viewBag == null)
{
_viewBag = new DynamicViewData(() => ViewData);
}
return _viewBag;
}
}
在 ViewData 属性中,您可以看到:
可以在激活 controller 后访问此属性,例如,在 controller 操作中或通过覆盖 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; }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.