我正在用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
。
所以,我只想在不同于-1的情况下显示WorkCenterNumber
。
这可能看起来有点愚蠢,但我希望帮助者能够做到这一点。
谢谢!
编辑:通过评论添加的其他随机信息:“SearchedInstruction是我公司的自定义框架中的模型,所以我不允许更改此
答案 0 :(得分:2)
只需将您的内容更改为以下逻辑:
public class SearchedInstruction
{
private int _idWorkCenter = -1;
public string IdWorkCenter
{
get { return _idWorkCenter != -1 ? _idWorkCenter : string.Empty; }
set { _idWorkCenter = value; }
}
}
答案 1 :(得分:2)
请勿使用magic numbers。
这里看起来你使用-1表示用户尚未指定,但可能不是,这就是为什么你不使用数字来表示意思。
在这种情况下,我会将int
更改为nullable int
,然后默认值为null,首次加载时文本框将为空。
编辑:通过评论添加的其他随机信息:“SearchedInstruction是我公司的自定义框架中的模型,所以我不允许更改此内容”。
在这种情况下,为您的视图添加新的ViewModel
并将值映射到(例如使用AutoMapper或类似的东西)
public class SearchedInstructionViewModel
{
public int? IdWorkCenter { get;set; }
}
更改您的视图以使用此viewmodel
@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);