Как отобразить элемент идентификатора с другого контроллера на другой контроллер в asp.net mvc - PullRequest
0 голосов
/ 12 декабря 2018

я уже передал идентификатор из комнаты контроллеру бронирования,

 <button type="button" onclick="location.href='@Url.Action("Create", "Bookings", new { id = item.RoomID })'" class="btn btn-info">Book</button>

теперь я хочу показать этот идентификатор другому контроллеру после нажатия кнопки «книга», вот изображение i want to display this item

Теперь я хочу перейти к другому контроллеру, который отображает идентификатор в виде текста и показывает здесь, но изображение не показывает детали.enter image description here

вот мой код в контроллере бронирования,

 public ActionResult Create(int id)
    {
        var bookings = db.Bookings.Include(b => b.Room).Include(b => b.Register);



        ViewBag.RoomID = new SelectList(db.Rooms, "RoomID", "RoomType");
        ViewBag.CustomerID = new SelectList(db.Registers, "id", "username");
        return View();
    }

что мне нужно сделать, чтобы отобразить данные номера в контроллере бронирования?

вот код для просмотра, enter image description here

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Возможны некоторые проблемы в вашем коде:

1) Избегайте использования имени свойства viewmodel в качестве ViewBag имени свойства, так как это может вызвать путаницу между ними.

2)Вы ничего не заполняете внутри DropDownList помощника, устанавливая для второго параметра нулевое значение, используйте ViewBag свойства, содержащие SelectList или List<SelectListItem>, чтобы заполнить его.

3) Используйте строго типизированный DropDownListFor для каждого свойства viewmodel.

Исходя из вышеизложенного, действие контроллера должно быть таким:

public ActionResult Create(int id)
{
    var bookings = db.Bookings.Include(b => b.Room).Include(b => b.Register);

    var model = new ViewModel();

    // use query to get both selected IDs
    model.RoomId = bookings.Where(...).Select(x => x.RoomId).FirstOrDefault();
    model.CustomerId = bookings.Where(...).Select(x => x.CustomerId).FirstOrDefault();

    ViewBag.RoomList = new SelectList(db.Rooms, "RoomID", "RoomType");
    ViewBag.CustomerList = new SelectList(db.Registers, "id", "username");
    return View(model);
}

И в обоих выпадающих списках должен использоваться хелпер со строгой типизацией, как в примере ниже:

@Html.DropDownListFor(model => model.RoomId, ViewBag.RoomList as SelectList, "-- Select Room --", new { @class = "form-control" })

@Html.DropDownListFor(model => model.CustomerId, ViewBag.CustomerList as SelectList, "-- Select Customer --", new { @class = "form-control" })

Примечание. Лучше заполнить списки параметров внутри свойств модели представления, которые имеют тип SelectList / List<SelectListItem>, и передать их непосредственно для просмотра:

Модель

public List<SelectListItem> RoomList { get; set; }

public List<SelectListItem> CustomerList { get; set; }

Действие контроллера

public ActionResult Create(int id)
{
    var bookings = db.Bookings.Include(b => b.Room).Include(b => b.Register);

    var model = new ViewModel();

    // use query to get both selected IDs
    model.RoomId = bookings.Where(...).Select(x => x.RoomId).FirstOrDefault();
    model.CustomerId = bookings.Where(...).Select(x => x.CustomerId).FirstOrDefault();

    model.RoomList = db.Rooms.Select(x => new SelectListItem { Text = x.RoomType, Value = x.RoomID }).ToList();
    model.CustomerList = db.Registers.Select(x => new SelectListItem { Text = x.username, Value = x.id }).ToList();
    return View(model);
}

Просмотр

@Html.DropDownListFor(model => model.RoomId, Model.RoomList, "-- Select Room --", new { @class = "form-control" })

@Html.DropDownListFor(model => model.CustomerId, Model.CustomerList, "-- Select Customer --", new { @class = "form-control" })
0 голосов
/ 12 декабря 2018

Вы можете установить выбранное значение с контроллера.

    public ActionResult Create(int id)
    {
        var bookings = db.Bookings.Include(b => b.Room).Include(b => b.Register);

        ViewBag.RoomID = new SelectList(db.Rooms, "RoomID", "RoomType", id);
        ViewBag.CustomerID = new SelectList(db.Registers, "id", "username");
        return View();
    }
...