AC CA
AC CA

Reputation: 7

Input tag not rendered if the input tag put in foreach

For some reason, the input tags aren't displayed if I put them in a foreach loop.

@foreach (var item in Model.KhuyenMais) { 
    <input class="form-control" name="SoLuongKM" value="@item.SoLuong" />
}

Upvotes: 0

Views: 146

Answers (3)

Pavan
Pavan

Reputation: 533

I am assuming that your model does not have the values Model.KhuyenMais.

See the following code snippet:

.CSHTML file code

@foreach (var item in MyWebApp.Controllers.MyClass.AssetList )
{
    <input class="form-control" name="SoLuongKM" value="@item.AssetName" />
}

C# Controllers file code

public ActionResult TreeListExport()
{
    List<Asset> oAsset = new List<Asset>();

    oAsset.Add(new Asset {AssetId =1, AssetName ="computer"});
    oAsset.Add(new Asset {AssetId =1, AssetName ="keyboard"});
    oAsset.Add(new Asset {AssetId =1, AssetName ="mouse"});

    MyClass.AssetList = oAsset;

    return View();
}

Upvotes: 0

Rai Vu
Rai Vu

Reputation: 1635

You can check and display when the model don't have item

@if(Model.KhuyenMais != null && Model.KhuyenMais.Count > 0)
{
     foreach (var item in Model.KhuyenMais) 
     { 
        <input class="form-control" name="SoLuongKM" value="@item.SoLuong"/>
     }
}
else
{
   <span> There is no result </span>
}

Upvotes: 1

Hien Nguyen
Hien Nguyen

Reputation: 18975

It is correct syntax and always render input tag.

You need check Model.KhuyenMais may be its length is zero.

<p>KhuyenMais count: @Model.KhuyenMais.Count</p>

@foreach (var item in Model.KhuyenMais) { 
    <input class="form-control" name="SoLuongKM" value="@item.SoLuong" />
}

Upvotes: 0

Related Questions