如何在 ASP.NET MVC 5 中包含来自 <label> html 标记内对象的值
How to include values from object inside <label> html tag in ASP.NET MVC 5
我需要在 <label>
和 <input>
html 标签内包含来自控制器的对象的值,该对象通过 ViewBag 来自控制器。以下是我在视图页面中使用的内容:
foreach (var stockItem in ViewBag.joinqry2)
{
<div class="col-md-2">
<label style='font-weight:normal;' name='InstockID' value= 'stockItem.ItemName' ><span> @(stockItem.ItemName) </span></label>
<input class='form-control input_field stockItem' name='labOrder.ConsumedInventories[ + i + ].ConsumedQuantity' type='number' id='" + data[i].Instock + "' min='0' value= '"+ stockItem.ConsumedQuantity + "'/>
</div>
}
ViewBag.joinqry2:
{ ConsumedQuantity = 1, ItemName = "Streck Tube" }
{ ConsumedQuantity = 1, ItemName = "Bubble Wrap" }
{ ConsumedQuantity = 7000, ItemName = "Biohazard Bag" }
{ ConsumedQuantity = 1, ItemName = "Absorbent Papers" }
{ ConsumedQuantity = 1, ItemName = "Test Tube" }
StockItem 在 foreach 循环中包含 ConsumedQuantity 和 ItemName 值,但我仍然收到如下错误:
我的错误是:
An exception of type
'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' occurred in
App_Web_euru3gao.dll but was not handled in user code
Additional information: 'object' does not contain a definition for
'ItemName'
您必须投射从 ViewBag 检索到的项目。在您当前的实现中,stockItem 是一个 object
,因此它不包含 属性 ItemName。
如 BviLLe_Kid 所述,更简洁的方法是使用 ViewModel:
public class ConsumedItemModel {
public int ConsumedQuantity {get; set;}
public string ItemName {get; set;}
}
在您的 cshtml 文件中,使用 @model
指令告诉 Razor 需要哪个 ViewModel。如果您需要其他属性,请创建一个包含 ConsumedItemModel
集合作为 属性 的 ViewModel。下面假设你只从控制器传递 ConsumedItemModel
的集合。
@model IList<ConsumedItemModel>
foreach (var stockItem in Model) {
var name = stockItem.ItemName;
var qty = stockItem.ConsumedQuantity;
// render label and input
}
我需要在 <label>
和 <input>
html 标签内包含来自控制器的对象的值,该对象通过 ViewBag 来自控制器。以下是我在视图页面中使用的内容:
foreach (var stockItem in ViewBag.joinqry2)
{
<div class="col-md-2">
<label style='font-weight:normal;' name='InstockID' value= 'stockItem.ItemName' ><span> @(stockItem.ItemName) </span></label>
<input class='form-control input_field stockItem' name='labOrder.ConsumedInventories[ + i + ].ConsumedQuantity' type='number' id='" + data[i].Instock + "' min='0' value= '"+ stockItem.ConsumedQuantity + "'/>
</div>
}
ViewBag.joinqry2:
{ ConsumedQuantity = 1, ItemName = "Streck Tube" }
{ ConsumedQuantity = 1, ItemName = "Bubble Wrap" }
{ ConsumedQuantity = 7000, ItemName = "Biohazard Bag" }
{ ConsumedQuantity = 1, ItemName = "Absorbent Papers" }
{ ConsumedQuantity = 1, ItemName = "Test Tube" }
StockItem 在 foreach 循环中包含 ConsumedQuantity 和 ItemName 值,但我仍然收到如下错误:
我的错误是:
An exception of type 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' occurred in App_Web_euru3gao.dll but was not handled in user code
Additional information: 'object' does not contain a definition for 'ItemName'
您必须投射从 ViewBag 检索到的项目。在您当前的实现中,stockItem 是一个 object
,因此它不包含 属性 ItemName。
如 BviLLe_Kid 所述,更简洁的方法是使用 ViewModel:
public class ConsumedItemModel {
public int ConsumedQuantity {get; set;}
public string ItemName {get; set;}
}
在您的 cshtml 文件中,使用 @model
指令告诉 Razor 需要哪个 ViewModel。如果您需要其他属性,请创建一个包含 ConsumedItemModel
集合作为 属性 的 ViewModel。下面假设你只从控制器传递 ConsumedItemModel
的集合。
@model IList<ConsumedItemModel>
foreach (var stockItem in Model) {
var name = stockItem.ItemName;
var qty = stockItem.ConsumedQuantity;
// render label and input
}