Для любви и денег Я не могу понять магическое сопоставление, которое выполняет ASP.NET MVC при отправке значений между страницами.Как правильно отправлять значения между страницами в ASP.NET MVC?
У меня есть «волшебник», состоящий из 3 действий контроллера: NewRequest, NewRequestValidation и PostNewRequest. NewRequest собирает ввод какой-либо формы и передает его в NewRequestValidation, где пользователь подтверждает свой запрос и либо отправляет его в PostNewRequest, либо отклоняет его, и возвращается в NewRequest.
NewRequest использует:
@model SCL.Intranet.Controllers.HR.LeaveRequests.NewLeaveRequestViewModel
NewRequestValidation ожидает NewLeaveRequestViewModel в качестве параметра по сигнатуре метода:
public ActionResult NewRequestValidation(NewLeaveRequestViewModel lrvm)
Затем он делает некоторые проверки и передает NewLeaveRequestAnalysisViewModel
вниз к соответствующему View.
Вид NewRequestValidation использует:
@model SCL.Intranet.Controllers.HR.LeaveRequests.NewLeaveRequestAnalysisViewModel
Я пытаюсь опубликовать некоторые части NewLeaveRequestAnalysisViewModel, в частности, "NewLeaveRequestViewModel" часть в PostNewRequest.
Мое определение формы, в том числе некоторых скрытых полей для транспортировки соответствующих значений, выглядит следующим образом:
@using (Html.BeginForm("PostNewRequest", "LeaveRequests", new { area = "HR" }, FormMethod.Post, new { @class = "form-horizontal" }))
{
@Html.HiddenFor(m => m.NewLeaveRequest)
@Html.HiddenFor(m => m.NewLeaveRequest.From.Date)
@Html.HiddenFor(m => m.NewLeaveRequest.From.Half)
@Html.HiddenFor(m => m.NewLeaveRequest.Until.Date)
@Html.HiddenFor(m => m.NewLeaveRequest.Until.Half)
@Html.HiddenFor(m => m.NewLeaveRequest.Type.LeaveRequestTypeId)
// Some presentation stuff here.
}
Наконец, PostNewRequest ожидает NewLeaveRequestViewModel:
public ActionResult PostNewRequest(NewLeaveRequestViewModel lrvm)
Я понимаю, что мне нужно пройти NewLeaveRequestViewModel в, и что мой текущий код не работает, потому что я на самом деле просто передаю кучу полей, которые имеют свои значения из предыдущего экземпляра NewLeaveRequestViewModel.
Вопрос: Как настроить новый метод NewLeaveRequestViewModel в NewRequestValidation, который будет соответствовать сигнатуре PostNewRequest?
, если вы действительно не должны , размещение формы в MVC не является лучшим способом. вместо этого вы хотите передать модели с контроллера на другой. – meda
Спасибо @meda - вы можете объяснить больше, в чем разница? Я не совсем уверен, что понимаю ваше предложение. –
@meda - будет ли это использовать TempData для хранения NewLeaveRequestViewModel, а затем получить его, если я удалю действие «PostNewRequest»? –