У меня есть маршрут, как это:Id Route переопределяет Model.Id
Conference/Committees/1
И внутри этой страницы, она перебирает комитетов для конференции (где Id конференции = 1).
У меня есть частичный вид, который отображает страницу редактирования стиля для выбранного комитета, с маршрутом, как это:
Conference/Committees/1?committeeId=2
В отладки, данные модели является правильным, и Комитет имеет Id = 2 . Однако, когда я использую следующее заявление: Razor
@Html.HiddenFor(model => model.Id)
со следующей моделью:
@model munhq.Models.Committee
Скрытый ввод имеет значение «1» вместо «2».
Это ошибка в MVC? Или я делаю что-то неправильно?
Update
Если я заменяю
@Html.HiddenFor(model => model.Id)
с
<input data-val="true" data-val-number="The field Id must be a number." data-val-required="The Id field is required." id="Id" name="Id" type="hidden" value="@Model.Id" />
это делает правильное значение Id.
Update 2
public async Task<ActionResult> Committees(int id, PrivilegedAction? actionToTake, int? committeeId, ConferenceStatusMessage? csm)
{
Conference conference;
HandleConferenceStatusMessage(csm);
try
{
conference = await db.Conferences
.Include(i => i.Committees.Select(c => c.CommitteeMemberCommitteeEntries))
.Where(i => i.Id == id)
.SingleAsync();
HandleAction(actionToTake, conference);
HandleAuthorisations(conference);
}
catch
{
return ConferenceActionFail();
}
if (committeeId == null)
{
if (conference.Committees.FirstOrDefault() == null)
{
committeeId = 0;
}
else
{
committeeId = conference.Committees.FirstOrDefault().Id;
}
ViewBag.ConferenceId = id; // used for adding a committee member entry
return RedirectToAction("Committees", new { id = id, action = actionToTake, committeeId = committeeId, csm = csm });
}
else
{
if (CommitteeIsPartOfConference(conference, committeeId) || committeeId == 0)
{
ViewBag.SelectedCommittee = committeeId;
ViewBag.JsonAvailableMembers = jsonAvailableCommitteeMembers(id);
return View(conference);
}
else
{
return HttpNotFound();
}
}
}
показать свой код контроллера. я уверен, что модель, которую вы передали в представление, имеет id = 2 –
@KundanSinghChouhan см. обновление. Вам все еще нужно видеть код контроллера? –
@nolly, представление не сообщает, что вы передали ему, это зависит от вашего кода контроллера, который содержит данные, переданные объектом. –