как можно распечатать значение двух столбцов таблицы - PullRequest
0 голосов
/ 29 июня 2011

Я работаю над MVC3 asp.net. это мой sr = tatement в контроллере: -

ViewBag.rawMaterialRequired = (from x in db.RawMaterial 
 join y in db.ProductFormulation on x.ID equals y.RawMaterialID 
 where y.ProductID == p select new { x.Description, y.Quantity });

это мой код в представлении: -

 @foreach(var album in ViewBag.rawMaterialRequired)
         {
                @album<br />
         }
         </div>

это мой вывод: -

{ Description = Polymer 26500, Quantity = 10 }
{ Description = Polymer LD-M50, Quantity = 10 }
{ Description = Titanium R-104, Quantity = 20 }

это мой желаемый вывод: -

enter image description here

1 Ответ

5 голосов
/ 29 июня 2011

Начните с разработки модели вида:

public class ProductLineViewModel
{
    public string Description { get; set; }
    public int Quantity { get; set; }
}

, затем в вашем контроллере используйте эту модель вида:

ViewBag.rawMaterialRequired = 
     from x in db.RawMaterial 
     join y in db.ProductFormulation on x.ID equals y.RawMaterialID 
     where y.ProductID == p 
     select new ProductLineViewModel 
     { 
         Description = x.Description, 
         Quantity = y.Quantity 
     };

и внутри вида:

<table>
    <thead>
        <tr>
            <th>Description</th>
            <th>Quantity</th>
        </tr>
    </thead>
    <tbody>
    @foreach(var product in (IEnumerable<ProductLineViewModel>)ViewBag.rawMaterialRequired)
    {
        <tr>
            <td>@product.Description</td>
            <td>@product.Quantity</td>
        </tr>
    }
    </tbody>
</table>

Это был первый шаг к улучшению вашего кода.Второй шаг состоит в том, чтобы избавиться от ViewBag и использовать строго типизированные представления и шаблоны отображения:

public ActionResult Foo()
{
    var model = 
         from x in db.RawMaterial 
         join y in db.ProductFormulation on x.ID equals y.RawMaterialID 
         where y.ProductID == p 
         select new ProductLineViewModel 
         { 
             Description = x.Description, 
             Quantity = y.Quantity 
         };
    return View(model);
}

и в представлении удалить все некрасивые циклы благодаря шаблонам отображения:

@model IEnumerable<ProductLineViewModel>
<table>
    <thead>
        <tr>
            <th>Description</th>
            <th>Quantity</th>
        </tr>
    </thead>
    <tbody>
        @Html.DisplayForModel()
    </tbody>
</table>

и внутри шаблона дисплея (~/Views/Shared/DisplayTemplates/ProductLineViewModel.cshtml):

@model ProductLineViewModel
<tr>
    <td>@Html.DisplayFor(x => x.Description)</td>
    <td>@Html.DisplayFor(x => x.Quantity)</td>
</tr>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...