【问题标题】:Multiple Table in Single View Page Asp.net 4单个视图页面中的多个表 Asp.net 4
【发布时间】:2020-09-16 10:47:17
【问题描述】:

我试图在一个视图中显示两个 2 表。我不想将其显示为列表,而是详细说明,并且大多数教程我都会获得列表视图。

我尝试了以下视频: https://youtu.be/oN1f2Vpc-wU

另一个链接: https://docs.microsoft.com/en-us/aspnet/mvc/overview/older-versions/getting-started-with-ef-5-using-mvc-4/reading-related-data-with-the-entity-framework-in-an-asp-net-mvc-application

现在我遇到的问题是,当我单击链接打开 ViewModel 的详细信息页面时,它显示为 null。

模型 1

[Table("UserRegistration")]
public partial class UserRegistration
{
    [Key]
    public Guid ClientId { get; set; }

    [StringLength(50)]
    public string FirstName { get; set; }

    [StringLength(50)]
    public string LastName { get; set; }

    [StringLength(50)]
    public string IdentityNumber { get; set; }

    [StringLength(50)]
    public string PhoneNumber { get; set; }

    public string Password { get; set; }

    public string ConfirmPassword { get; set; }

    [Column(TypeName = "date")]
    public DateTime? DateCreated { get; set; }
}

模型 2

[Table("Voucher")]
public partial class Voucher
{
    public int VoucherId { get; set; }

    public Guid? CustomerId { get; set; }

    [StringLength(50)]
    public string HouseNumber { get; set; }

    [StringLength(50)]
    public string PostalCode { get; set; }

    [StringLength(50)]
    public string Location { get; set; }

    [Column(TypeName = "date")]
    public DateTime? DateCreated { get; set; }
}

视图模型

 public class ViewModel
{

    public Guid? CustomerId { get; set; }

    public string FirstName { get; set; }


    public string LastName { get; set; }


    public string IdentityNumber { get; set; }


    public string HouseNumber { get; set; }


    public string PostalCode { get; set; }


    public string Location { get; set; }
} 

控制器用户注册

  private mymodel db = new mymodel();

    // GET: UserRegistrations
    public ActionResult Index()
    {
        return View(db.UserRegistrations.ToList());
    }

控制器主页

    private mymodel db = new mymodel();
    // GET: Home
    public ActionResult Index(Guid id)
    {
        //
        UserRegistration ur = db.UserRegistrations.Single(x => x.ClientId == id);
        Voucher voucher = new Voucher();

        ViewModel viewm = new ViewModel();

        ur.FirstName = viewm.FirstName;
        ur.LastName = viewm.LastName;

        voucher.HouseNumber = viewm.HouseNumber;
        voucher.Location = viewm.Location;
        voucher.PostalCode = viewm.PostalCode;


        return View(viewm);
    }

Index.cshtml

          @model ExampleTestMVC.Models.ViewModel
    @{
        ViewBag.Title = "Index";
     }

     <h2>Index</h2>


     <div>
     <h4>UserRegistration</h4>
     <hr />
     <dl class="dl-horizontal">
     <dt>
       @Html.DisplayNameFor(model => model.FirstName)
      </dt>

      <dd>
        @Html.DisplayFor(model => model.FirstName)
      </dd>

      <dt>
        @Html.DisplayNameFor(model => model.LastName)
    </dt>

    <dd>
        @Html.DisplayFor(model => model.LastName)
    </dd>


    <dt>
        @Html.DisplayNameFor(model => model.HouseNumber)
    </dt>

    <dd>
        @Html.DisplayFor(model => model.Location)
    </dd>


    <dt>
        @Html.DisplayNameFor(model => model.PostalCode)
    </dt>

    <dd>
        @Html.DisplayFor(model => model.PostalCode)
    </dd>

</dl>

用于用户注册的Index.chtml

   @model IEnumerable<ExampleTestMVC.Models.UserRegistration>

   @{
    ViewBag.Title = "Index";
    }

   <h2>Index</h2>

   <p>
    @Html.ActionLink("Create New", "Create")
   </p>
   <table class="table">
   <tr>
    <th>
        @Html.DisplayNameFor(model => model.FirstName)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.LastName)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.IdentityNumber)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.PhoneNumber)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.Password)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.ConfirmPassword)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.DateCreated)
    </th>
    <th></th>
</tr>

  @foreach (var item in Model) {
    <tr>
    <td>
        @Html.DisplayFor(modelItem => item.FirstName)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.LastName)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.IdentityNumber)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.PhoneNumber)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.Password)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.ConfirmPassword)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.DateCreated)
    </td>
    <td>
        @Html.ActionLink("details of everything", "Index", "Home", new { id = item.ClientId }, null) |     
       </td>
       </tr>
       }

      </table>

【问题讨论】:

    标签: asp.net asp.net-mvc asp.net-mvc-4 asp.net-mvc-3 ef-code-first


    【解决方案1】:

    您没有为与详细视图绑定的视图模型设置值。像这样更改 Home 控制器代码:

    public ActionResult Index(Guid id)
    {
        //
        UserRegistration ur = db.UserRegistrations.Single(x => x.ClientId == id);
        Voucher voucher = db.Vouchers.Single(x => x.CustomerId == id);
    
        ViewModel viewm = new ViewModel();
    
        viewm.FirstName=ur.FirstName;
        viewm.LastName=ur.LastName;
    
        viewm.HouseNumber=voucher.HouseNumber;
        viewm.Location=voucher.Location;
        viewm.PostalCode=voucher.PostalCode;
    
    
        return View(viewm);
    }
    

    【讨论】:

      猜你喜欢
      • 2020-06-24
      • 2010-09-10
      • 2014-06-03
      • 1970-01-01
      • 2013-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多