如何将字符串列表从控制器传递到视图(或者我现在尝试这样做的方式可能不是这样)

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&lt;string&gt;) - 并将模型传递给视图,而不是使用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&lt;string&gt;,而您已经返回View(),所以这是不可能的。将方法返回类型 List&lt;string&gt; 更改为 ActionResult 它应该可以工作。谢谢。

【讨论】:

以上是关于如何将字符串列表从控制器传递到视图(或者我现在尝试这样做的方式可能不是这样)的主要内容,如果未能解决你的问题,请参考以下文章

如何通过ajax jquery将列表字符串从视图传递到控制器

如何将项目列表从视图传递到控制器(ASP.NET MVC 4)

如何将反序列化JSON中的列表传递给视图到选择列表

如何在 Spring-MVC 中将数据从视图传递到控制器?

如何将数据从 appdelegate 传递到视图控制器?

如何将参数从视图传递到控制器?