如何将值从控制器A传递到视图(a),然后从视图(a)传递到控制器B?

时间:2016-04-06 09:50:04

标签: c# ajax asp.net-mvc view viewdata

我的sql表中有一个nvarchar字段类型,它是Availableblsizes,值类似于40,41,42,43。我想使用.split()方法在控制器A中拆分这些字符串,然后将其传递给下拉列表中的单个选择列表。从视图(a)我想传递选定的值让假设值42到B控制器,我应该怎么做?我无法为此编写单一代码,因为我不知道该怎么做?任何现实的例子都会非常感激。

1 个答案:

答案 0 :(得分:2)

首先,您可以创建一个既包含选项又包含所选值的视图模型。

{
    camelCase = "";
    "camelCaseWith space" = "";
    "camelCaseWith/special" = "";
    "camelCaseWith__suffix" = "";
    simple = "";
}

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的{​​{1}}中。

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" /> } 的{​​{1}}中,您需要将ActionB作为参数传递给操作方法。

ControllerB