C# 减去两个ViewBag值
不确定这是否是正确的方法。但是,我在一个视图上有两个文本框,由控制器的Viewbag填充。它们是int值。一个值是库存单位数(C# 减去两个ViewBag值,c#,asp.net-mvc-5,C#,Asp.net Mvc 5,不确定这是否是正确的方法。但是,我在一个视图上有两个文本框,由控制器的Viewbag填充。它们是int值。一个值是库存单位数(Viewbag.stock),另一个值是订购单位数(Viewbag.ordered)。我还有第三个文本框,我想显示Viewbag.Stock-Viewbag.Ordered的值 我试着在控制器中这样做,但没有结果。我还尝试在文本框的值中执行此操作,但这也不起作用 这是我第一次尝试实现这一目标 模型 控制器 ViewBag.Stock = r.FirstOr
Viewbag.stock
),另一个值是订购单位数(Viewbag.ordered
)。我还有第三个文本框,我想显示Viewbag.Stock-Viewbag.Ordered
的值
我试着在控制器中这样做,但没有结果。我还尝试在文本框的值中执行此操作,但这也不起作用
这是我第一次尝试实现这一目标
模型
控制器
ViewBag.Stock = r.FirstOrDefault().OnHand;
ViewBag.Ordered = r.FirstOrDefault().UnitsOrdered;
ViewBag.Total = ViewBag.Stock - ViewBag.Ordered;
看法
@LabelFor(model=>model.UnitsOrdered,(字符串)“手头上的单位”,htmlAttributes:new{@class=“control label col-md-2”})
@TextBox(“OnHand”,null,new{@class=“form control”,Value=ViewBag.Stock,@readonly=“readonly”})
@LabelFor(model=>model.UnitsOrdered,(字符串)“订购的单元数”,htmlAttributes:new{@class=“control label col-md-2”})
@EditorFor(model=>model.UnitsOrdered,new{htmlAttributes=new{@class=“form control”,@readonly=“readonly”})
@ViewBag.MyCountIntro@ViewBag.MyCount
@Html.ValidationMessageFor(model=>model.UnitsOrdered,“,new{@class=“text danger”})
@TextBox(“剩余”,空,新{@class=“form control”,Value=ViewBag.Total,@readonly=“readonly”})
在上面的场景中,Viewbag.Stock是60。查看包。订购的是2。查看包。总数应为58。但实际上,它是空白的
我也试着用视图本身来计算这一点。这也会产生一个空白
<div class="col-md-10">
@Html.TextBox("Remaining", null, new { @class = "form-control", Value = ViewBag.Stock - Viewbag.Ordered, @readonly = "readonly" })
</div>
@TextBox(“剩余”,null,新{@class=“form control”,Value=ViewBag.Stock-ViewBag.Ordered,@readonly=“readonly”})
ViewBag本身会将该值视为一个对象。在进行计算之前,应该将该对象强制转换为适当的类型
ViewBag.Total=(int)ViewBag.Stock-(int)ViewBag.Ordered代码>您可以添加视图模型,而不是使用ViewBag(请参阅):
这将是一个更易于维护的代码,因为它允许轻松重构、键入成员等。谢谢@Adriani6。这就是我使用的解决方案。虽然两种解决方案都很好。另一个可能更合适一点。您的解决方案很容易理解,并且以我开始的方式最好地解决了问题。非常感谢。
<div class="form-group">
@Html.LabelFor(model => model.UnitsOrdered, (string)"Units On Hand ", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.TextBox("OnHand", null, new { @class = "form-control", Value = ViewBag.Stock, @readonly = "readonly" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.UnitsOrdered, (string)"Number of Units Ordered", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.UnitsOrdered, new { htmlAttributes = new { @class = "form-control", @readonly = "readonly" } })
@ViewBag.MyCountIntro @ViewBag.MyCount
@Html.ValidationMessageFor(model => model.UnitsOrdered, "", new { @class = "text-danger" })
</div>
</div>
<div class="col-md-10">
@Html.TextBox("Remaining", null, new { @class = "form-control", Value = ViewBag.Total, @readonly = "readonly" })
</div>
<div class="col-md-10">
@Html.TextBox("Remaining", null, new { @class = "form-control", Value = ViewBag.Stock - Viewbag.Ordered, @readonly = "readonly" })
</div>
class MyViewModel {
public int Ordered {get; set;}
public int Stock {get; set;}
public int Total => Stock - Ordered;
}