Я пытаюсь получить свойство из модели представления объекта со своими свойствами, показанными в подробном представлении моего действия. Свойством, которое я пытаюсь получить, является sessionId, который указан в моем представлении. Мой код, чтобы вывести его значение, не возвращает правильное значение. Значение sessID имеет значение 0 при отладке. Что я делаю неправильно?Получение свойства модели из «Details» View в ASP.Net MVC
My Model
public class SessionViewModel
{
public SessionViewModel()
{
}
public SessionViewModel(Session sessionDTO)
{
Id = sessionDTO.Id;
SessionTitle = sessionDTO.SessionTitle;
SessionDescription = sessionDTO.SessionDescription;
SessionPresenter = sessionDTO.SessionPresenter;
SessionLocation = sessionDTO.SessionLocation;
SessionRoom = sessionDTO.SessionRoom;
SessionDate = sessionDTO.SessionDate;
SessionOccupancy = sessionDTO.SessionOccupancy;
}
public int Id { get; set; }
public string SessionTitle { get; set; }
public string SessionDescription { get; set; }
public string SessionPresenter { get; set; }
public string SessionLocation { get; set; }
public string SessionRoom { get; set; }
public DateTime SessionDate { get; set; }
public int SessionOccupancy { get; set; }
public bool IsSelected { get; set; }
}
Мой Посмотреть
@model Project.Models.ViewModels.ManageSession.SessionViewModel
@{
ViewBag.Title = "SessionDetails";
}
<h2>Session Details</h2>
@using (Html.BeginForm("RegisterFromDetailsVM", "Session"))
{
<button type="submit" class="btn btn-success">Register</button>
<div>
<hr />
<dl class="dl-horizontal">
<dt>Session ID</dt>
<dd>
@Html.DisplayFor(model => model.Id)
</dd>
<dt>Title</dt>
<dd>
@Html.DisplayFor(model => model.SessionTitle)
</dd>
<dt>Description</dt>
<dd>
@Html.DisplayFor(model => model.SessionDescription)
</dd>
<dt>Presenter</dt>
<dd>
@Html.DisplayFor(model => model.SessionPresenter)
</dd>
<dt>Location</dt>
<dd>
@Html.DisplayFor(model => model.SessionLocation)
</dd>
<dt>Room</dt>
<dd>
@Html.DisplayFor(model => model.SessionRoom)
</dd>
<dt>Date</dt>
<dd>
@Html.DisplayFor(model => model.SessionDate)
</dd>
<dt>Occupancy</dt>
<dd>
@Html.DisplayFor(model => model.SessionOccupancy)
</dd>
</dl>
</div>
}
Мои действия
[HttpPost]
public ActionResult RegisterFromDetailsVM(SessionViewModel sessionVM)
{
using (WSADDbContext context = new WSADDbContext())
{
//Capture logged in user info
int userID = context.Users.Where(x => x.Username == User.Identity.Name).Select(y => y.Id).FirstOrDefault();
string userName = context.Users.Where(x => x.Username == User.Identity.Name).Select(y => y.Username).FirstOrDefault();
string firstName = context.Users.Where(x => x.Username == User.Identity.Name).Select(y => y.FirstName).FirstOrDefault();
string lastName = context.Users.Where(x => x.Username == User.Identity.Name).Select(y => y.LastName).FirstOrDefault();
//Get the sessionId
int sessID = sessionVM.Id;
//Create the SubscribedSession DTO object
context.SubscribedSessions.Add(new SubscribedSession()
{
UserID = userID,
SessionID = sessID,
FirstName = firstName,
LastName = lastName,
Username = userName
});
//Save the changes
context.SaveChanges();
}
//return
return RedirectToAction("Index");
}
Спасибо Ясен. В итоге я использовал как DisplayFor(), так и HiddenFor(). DisplayFor() показывает значения, а HiddenFor() фактически передает значения обратно в мое действие. – tmt32mj