@Html.TextBoxFor不显示特定的值
本文关键字:显示 TextBoxFor @Html | 更新日期: 2023-09-27 17:55:06
我正在用Razor开发一个asp.net网站。
对于我的表单,我使用助手(如@Html.TextBoxFor
),我不想显示一个特定的值。这很难解释,所以这里有一些代码。
public class SearchedInstruction
{
private int _workCenterNumber= -1;
public int WorkCenterNumber
{
get { return _idWorkCenter; }
set { _idWorkCenter = value; }
}
}
我的观点
@model InstructionSearchViewModel
@using (Html.BeginForm("InstructionSearch", "Search", FormMethod.Post, new { onsubmit = "submitSearchInstruction()" }))
{
<div class="col-md-3">
@Html.Label("Poste de charge")
@Html.TextBoxFor(m => m.WorkCenterNumber, new { @class = "form-control" })
</div>
}
所以,当然,我的input
在这里的值是-1
,而且,因为我在其他一些视图中使用这个部分,其中WorkCenterNumber
不同于-1
。
所以,我想显示WorkCenterNumber
只有当它不同于-1
这可能看起来有点愚蠢,但我希望有一些帮助,将允许我这样做。
谢谢!
EDIT:通过注释添加的额外随机信息:"SearchedInstruction是我公司自定义框架的模型,所以我不允许更改此
不要用幻数
在这里,你似乎用-1来表示用户尚未指定的,但也许不是,这就是为什么你不使用数字来表示意义。
在这种情况下,我将int
更改为nullable int
,然后默认值将为空,文本框将在第一次加载时为空。
Edit:通过注释添加的额外随机信息:"SearchedInstruction是我公司自定义框架的模型,所以我不允许更改此"。
在这种情况下,为您的视图添加一个新的ViewModel
并映射值(例如使用AutoMapper或任何类似的)
public class SearchedInstructionViewModel
{
public int? IdWorkCenter { get;set; }
}
改变你的视图来使用这个视图模型
@model SearchedInstructionViewModel
并在控制器
中填充var model = db.SearchedInstruction.Load... // however you load the *model*
var viewModel = new SearchedInstructionViewModel();
viewModel.IdWorkCenter = model.IdWorkCenter;
// etc, or use an automapper
return View(viewModel);
只需将get更改为以下逻辑:
public class SearchedInstruction
{
private int _idWorkCenter = -1;
public string IdWorkCenter
{
get { return _idWorkCenter != -1 ? _idWorkCenter : string.Empty; }
set { _idWorkCenter = value; }
}
}