Как я могу сделать представление cshtml для моей Edit ViewModel

Это моя ViewModel

namespace CRUD2.ViewModel
{
    public class CostVM
    {
        public int id { get; set;}

        public string nama { get; set; }
        public string alamat { get; set; }

        public string jenis { get; set; }

        public informasi informasi { get; set; }
        public iseng iseng { get; set; }
    }
}

Это мой Index.cshtml

@model IEnumerable<CRUD2.ViewModel.CostVM>
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <table cellspacing="2px;">
        <tr>
            <th>Nama</th>
            <th>Alamat</th>
            <th>Jenis</th>
            <th>Action</th>
        </tr>
        @foreach (var item in Model)
        {
            <tr>
                <td>@item.informasi.nama</td>
                <td>@item.informasi.alamat</td>
                <td>@item.iseng.jenis</td>
                <td>
                    @Html.ActionLink("Edit", "Edit", new { id = item.informasi.id }) |
                    @Html.ActionLink("Back to List", "Index")
                </td>
            </tr>
        }
    </table>
</body>
</html>

и это мой контроллер (редактирование и индексирование)

namespace CRUD2.Controllers
{
       public ActionResult Edit(int id = 0)
       {
        var costumerlist = from cust in db.informasis
                           join ord in db.isengs
                           on cust.id equals ord.id
                           where cust.id == id
                           select new { cust.nama, cust.alamat, cust.jk, cust.kelas, ord.jenis };

        return View(costumerlist.FirstOrDefault());
       }
    }
}

Как я могу сделать свой Edit.cshtml? Я не понимаю, как это сделать, я понятия не имею, и если у меня есть какие-либо ошибки в моем коде, исправьте их. Спасибо.

Извините за мой плохой английский..


person Rahman Kryptonz    schedule 29.10.2017    source источник
comment
Пожалуйста, взгляните на: weblogs.asp.net/scottgu/ Похоже, вы создаете анонимный тип, но представление ожидает список CostVM. Кроме того, по соглашению имя вашего представления должно совпадать с именем метода. Таким образом, ваш метод называется edit, поэтому ваше представление также должно называться edit.cshtml.   -  person Hans Wurst    schedule 29.10.2017


Ответы (1)


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

@model dynamic

Поскольку у вас есть анонимный тип, но лучше было бы создать класс со всеми свойствами, возвращаемыми из этого выбора:

public class SomeViewModel
{
   public string nama { get; set; }
   .
   .
}

А затем измените запрос, чтобы использовать это:

public ActionResult Edit(int id = 0)
{
    var costumerlist = from cust in db.informasis
                       join ord in db.isengs
                       on cust.id equals ord.id
                       where cust.id == id
                       select new SomeViewModel { cust.nama, cust.alamat, cust.jk, cust.kelas, ord.jenis };

    return View(costumerlist.FirstOrDefault());
}

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

@model SomeViewModel

Создание представления редактирования будет таким же, как вы создали представление индекса; щелкните правой кнопкой мыши действие контроллера, выберите «Добавить представление» и выберите модель.

person Brian Mains    schedule 29.10.2017