C# @Html.TextBoxFor不显示特定值
我正在用Razor在ASP.Net中开发一个网站 对于我的表单,我使用的是Helpers(比如C# @Html.TextBoxFor不显示特定值,c#,asp.net,asp.net-mvc,razor,helper,C#,Asp.net,Asp.net Mvc,Razor,Helper,我正在用Razor在ASP.Net中开发一个网站 对于我的表单,我使用的是Helpers(比如@Html.TextBoxFor),我不想显示特定的值。这很难解释,所以这里有一些代码 我的模型 public class SearchedInstruction { private int _workCenterNumber= -1; public int WorkCenterNumber { get { return _idWorkCenter; }
@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>
}
@model指令搜索视图模型
@使用(Html.BeginForm(“指令搜索”、“搜索”、FormMethod.Post、new{onsubmit=“submitsarchinstruction()”}))
{
@Html.Label(“收费邮件”)
@Html.TextBoxFor(m=>m.WorkCenterNumber,新的{@class=“form control”})
}
因此,当然,我的输入
这里的值是-1
,因为我甚至在一些其他视图中使用了这个部分,其中WorkCenterNumber
与-1
不同
因此,我只想在WorkCenterNumber
与-1不同时才显示它
这似乎有点愚蠢,但我希望助手们能让我这样做
谢谢
编辑:通过注释添加的其他随机信息:“SearchedInstruction是我公司自定义框架的一个模型,因此我不允许更改此内容只需将您的get更改为符合逻辑的以下内容:
public class SearchedInstruction
{
private int _idWorkCenter = -1;
public string IdWorkCenter
{
get { return _idWorkCenter != -1 ? _idWorkCenter : string.Empty; }
set { _idWorkCenter = value; }
}
}
只需将get更改为符合逻辑的以下内容:
public class SearchedInstruction
{
private int _idWorkCenter = -1;
public string IdWorkCenter
{
get { return _idWorkCenter != -1 ? _idWorkCenter : string.Empty; }
set { _idWorkCenter = value; }
}
}
不要使用
在这里,您使用-1表示用户尚未指定,但可能不是,这就是为什么您不使用数字来表示含义
在这种情况下,我将int
更改为可为null的int
,然后默认值将为null,文本框在第一次加载时将为空
编辑:通过评论添加的附加随机信息:“SearchedInstruction是我公司自定义框架的模型,因此我不允许更改此内容”
在这种情况下,为您的视图添加一个新的ViewModel
,并在其中映射值(例如使用AutoMapper或任何类似工具)
更改视图以使用此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);
不要使用
在这里,您使用-1表示用户尚未指定,但可能不是,这就是为什么您不使用数字来表示含义
在这种情况下,我将int
更改为可为null的int
,然后默认值将为null,文本框在第一次加载时将为空
编辑:通过评论添加的附加随机信息:“SearchedInstruction是我公司自定义框架的模型,因此我不允许更改此内容”
在这种情况下,为您的视图添加一个新的ViewModel
,并在其中映射值(例如使用AutoMapper或任何类似工具)
更改视图以使用此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);
完全误解了他的要求。很好的回答也考虑了这一点,但是
SearchedInstruction
是来自我公司定制框架的模型,所以我不允许更改它:/@LeZohan68,在将模型传递到视图之前在控制器中更改它完全误解了他的要求。很好的回答也考虑了这一点,但是SearchedInstruction
是来自我公司自定义框架的模型,因此我不允许更改此命令:/@LeZohan68,在将模型传递到视图之前在控制器中更改它假设您的意思是@Html.TextBoxFor(m=>m.IdWorkCenter)
(不是WorkCenterNumber
)。一如既往,请使用视图模型并将数据模型映射到视图模型。如果值为-1,则不要设置它(视图模型属性应为int?
假设您的意思是@Html.TextBoxFor(m=>m.IdWorkCenter)
(不是WorkCenterNumber
)。一如既往,使用视图模型并将数据模型映射到视图模型。如果值为-1,则不要设置它(视图模型属性应为int?
如下所示,我不允许更改模型,但正如@ammarces所说,我将在控制器中更改它。实际上,我更喜欢您的版本。(我想在提交表单时保留一个int)。谢谢你们两位!请在问题中添加此要求/限制!如下所示,我不允许更改模型,但正如@ammarces所说,我将在控制器中更改它。我实际上更喜欢您的版本。(我想在提交表单时保留一个int).谢谢你们两位!请在问题中添加此要求/限制!