Как передать значение из контроллера A в представление (a), а затем из представления (a) в контроллер B?
У меня есть тип поля nvarchar в моей таблице sql, которая доступна, значения как 40,41,42,43. Я хотел бы разбить эти строки в контроллере А с .split()
метод затем передать его, чтобы просмотреть в раскрывающемся списке как один список выбора. с точки зрения (а) я хотел бы передать выбранное значение, пусть предположим, что значение 42 для контроллера B, как я должен это сделать? Я не смог написать ни одного кода для этого, потому что я не знаю, как это сделать? Любой реалистичный пример будет высоко ценится.
1 ответ
Итак, сначала вы можете создать модель представления, которая будет содержать как выбор, так и выбранное значение.
public class MyViewModel
{
public MyViewModel()
{
SizeChoices = new List<int>();
}
public int ChosenSize { get; set; }
public IEnumerable<int> SizeChoices { get; set; }
public SelectList SizeChoicesSelectList
{
get
{
return new SelectList(SizeChoices);
}
}
}
В ControllerA
вам нужно будет построить эту модель представления и передать ее View
метод.
public ActionResult ViewA()
{
var sizeChoicesFromDb = "40,41,42,43"; // get from db
var myModel = new MyViewModel
{
SizeChoices = sizeChoicesFromDb .Split(',').ToList().ConvertAll(Int32.Parse)
};
return View(myModel);
}
Затем, по мнению ControllerA
Вы можете отобразить выпадающий список с помощью Html.DropDownListFor
метод. Вы должны были бы обернуть это в Html.BeginForm
заявление, что сообщения ActionB
из ControllerB
,
@model So_MVC.Models.MyViewModel
@using (Html.BeginForm("ActionB", "ControllerB", FormMethod.Post))
{
@Html.DropDownListFor(m => m.ChosenSize, Model.SizeChoicesSelectList)
<input type="submit" value="Submit" />
}
Затем в ActionB
из ControllerB
вам нужно будет пройти в MyViewModel
в качестве параметра к методу действия.
public ActionResult ActionB(MyViewModel myViewModel)
{
// myViewModel.ChosenSize will contain whatever you chose
// ...
}