@ Html.TextBox不显示特定值

时间:2015-06-11 09:04:50

标签: c# asp.net asp.net-mvc razor helper

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

2 个答案:

答案 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);