如何将字符串列表从控制器传递到视图(或者我现在尝试这样做的方式可能不是这样)
Posted
技术标签:
【中文标题】如何将字符串列表从控制器传递到视图(或者我现在尝试这样做的方式可能不是这样)【英文标题】:How to pass list of strings from a Controller to a View ( or maybe it is not on way I try to do it now) 【发布时间】:2017-04-09 21:52:04 【问题描述】:这是我的第一个 MVC 应用程序,我想知道是否可以通过这种方式将字符串列表传递给控制器,如果不是,我想知道为什么它不是 :
我在这里尝试做的事情:
public List<string> Index(string id)
ViewBag.Peoples = new List<string>()
"Joe",
"John",
"Jennifer"
;
return View();
这是我得到的错误:
错误 1 无法将类型“System.Web.Mvc.ViewResult”隐式转换为“System.Collections.Generic.List
”
我想知道为什么我会遇到这个问题,为什么我不能只将字符串列表传递给索引视图?
【问题讨论】:
public ActionResult Index(string id)
(不是List<string>
) - 并将模型传递给视图,而不是使用ViewBag
【参考方案1】:
您的返回类型应该是 ActionResult,通过将视图模型(包含字符串列表等属性)作为参数传递给它应该绑定到的视图来生成。
public ActionResult Multiple()
if(DateTime.Now.Day % 2 == 0)
return View("Other");
else
return RedirectToAction("Index");
请原谅格式化,在我的手机上。
教程在这里https://www.exceptionnotfound.net/asp-net-mvc-demystified-actionresults/amp/
【讨论】:
【参考方案2】:你可以使用表单收集方法
public ActionResult Test(FormCollection collection)
string results = collection["Blanks"];
【讨论】:
【参考方案3】:public ActionResult Index(string id)
ViewBag.Peoples = new List<string>()
"Joe",
"John",
"Jennifer"
;
return View();
这里的问题是您的方法返回类型是List<string>
,而您已经返回View()
,所以这是不可能的。将方法返回类型 List<string>
更改为 ActionResult
它应该可以工作。谢谢。
【讨论】:
以上是关于如何将字符串列表从控制器传递到视图(或者我现在尝试这样做的方式可能不是这样)的主要内容,如果未能解决你的问题,请参考以下文章
如何通过ajax jquery将列表字符串从视图传递到控制器