проверить метод paremetares вашего метода действия и возвращать разные взгляды baed на этом. Что-то вроде этого.
public ActionResult GetInfo(string id,string vehicleTypId)
{
if(String.IsNullOrEmpty(vehicleTypeId))
{
var vehicle=GetVehicleType(vehicleTypId);
return View("ShowSpecificVehicle",vehicle) ;
}
var genericVehicle=GetVehicle(id);
return View(genericVehicle);
}
EDIT: Говоря так, я серьезно думаю, что вы должны держать эти в 2 отдельных методов действий. Это делает ваш код чистым и читаемым. Вы можете перенести общую функциональность на функцию и вызвать, если из bothe нужны методы id. Так что я хотел бы сделать это таким образом
Предполагая, что у вас есть ViewModel для первой страницы (отображает все vehicletypes)
public class VehicleTypesViewModel
{
//other relevant properties
public IEnumerable Types { set;get;}
public int SelectedTypeId { set;get;}
}
Ваш запрос GET для исходного вида будут обрабатываться этим действием result.It получает всех типов транспортных средств и вернуть их в свой вид в свойстве ViewModels Types.
public ActionResult VehicleTypes()
{
VehicleTypesViewModel objVM=new VehicleTypesViewModel();
objVM.Types=dbContext.VehicleTypes.ToList();
return View(objVM);
}
и в вашем View называется VehicleTypes.cshtml,
@model VehicleTypesViewModel
@using(Html.BeginForm())
{
@Html.DropDownListFor(Model.SelectedTypeId,new SelectList(Model.Types,"Text",Value"),"Select")
<input type="submit" value="Go" />
}
Другим способом действий для обработки формы поста. У вас есть выбранный идентификатор типа здесь, и вы можете получить конкретные детали здесь и возвращают другой вид
[HttpPost]
public ActionResult VehicleTypes(VehicleTypesViewModel model)
{
// you have the selected Id in model.SelectedTypeId property
var specificVehicle=dbContext.Vehicles.Where(x=>x.TypeId=model.SelectedTypeId);
return View("SpecificDetails",specificVehicle);
}
В качестве альтернативы вы можете сделать запрос Получить для конкретного транспортного средства с использованием метода RedirecToAction. Я бы предпочел этот подход, поскольку он придерживается шаблона PRG.
[HttpPost]
public ActionResult VehicleTypes(VehicleTypesViewModel model)
{
int typeId=model.SelectedTypeId;
return RedirectToAction("GetVehicle",new {@id=typeId});
}
public ActionResult GetVehicle(int id)
{
var specificVehicle=dbContext.Vehicles.Where(x=>x.TypeIdid);
return View(specificVehicle);
}
С Javascript: Вы можете сделать ПОЛУЧИТЬ вызов на новый вид из вашего JavaScript тоже. без HTTPpost для контроллера. Вы должны добавить некоторые JavaScript в вашем изначальном виде для того
@model VehicleTypesViewModel
//Include jQuery library reference here
@Html.DropDownListFor(Model.SelectedTypeId,new SelectList(Model.Types,"Text",Value"),"Select")
<script type="text/javascript">
$(function(){
$("#SelectedTypeId").change(){
window.location.href="@Url.Action("GetVehicle","Yourcontroller")"+"/"+$(this).attr("id");
});
});
</script>
Вы хотите показать новый обзор на всей странице? или часть страницы? или диалоговое окно модели? – Shyju
Я думаю, было бы неплохо не показывать обновление страницы - но, возможно, новая страница имеет смысл, а не уверен ???, definitley не диалог.Но мне нужно перенести идентификатор, созданный на странице Vehicle, так как это используется как ключ foriegn на следующей странице. – Vidar
Я добавил asnwer. Можете ли вы показать нам свою модель – Shyju