@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是我公司自定义框架的模型,所以我不允许更改此

@Html.TextBoxFor不显示特定的值

不要用幻数

在这里,你似乎用-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; }
    }
}