Несколько таблиц на странице единого просмотра Asp. net 4 - PullRequest
0 голосов
/ 29 мая 2020

Я пытаюсь отобразить две 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; }
}

ViewModel

 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.cs html

          @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>

1 Ответ

1 голос
/ 29 мая 2020

Вы не устанавливаете значение для модели просмотра, которая связана с подробным представлением. Измените код домашнего контроллера следующим образом:

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...