Как передать значение из контроллера 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

    // ... 
}
Другие вопросы по тегам