如何为我的编辑ViewModel创建视图cshtml

时间:2017-10-29 09:47:33

标签: c# asp.net-mvc asp.net-mvc-4 asp.net-mvc-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>

这是我的Controler(编辑和索引)

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?我不明白如何制作,我不知道,如果我的代码有任何错误,请修复它..谢谢

抱歉我的英语不好..

1 个答案:

答案 0 :(得分:1)

您正在创建两个数据源的自定义混合,这很好。您可以添加编辑视图:

@model dynamic

由于您有一个匿名类型,但更好的方法是创建一个包含从此select返回的所有属性的类:

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

创建编辑视图与创建索引视图的方式相同;右键单击控制器操作,选择Add View并选择模型。