如何从MVC中的Controller动态创建多个ActionLink?

Van*_*iza 1 c# asp.net-mvc razor asp.net-mvc-4

我正在使用MVC,我有一个字符串列表,我想指向一个新页面.我正在使用Razor,我对MVC很新,似乎无法通过谷歌找到我的问题的答案.

我的清单可能包含以下内容:

"hello"
"goodbye"
"seeya"
Run Code Online (Sandbox Code Playgroud)

我知道如何使用ViewBag将控制器中的字符串插入到html页面,如果我有一组固定的字符串,我会使用以下actionlink:

@Html.ActionLink("viewedName", "ChemicalClass", new { mystring = "hello" })
@Html.ActionLink("viewedName", "ChemicalClass", new { mystring = "goodbye" })
@Html.ActionLink("viewedName", "ChemicalClass", new { mystring = "seeya" })
Run Code Online (Sandbox Code Playgroud)

据我了解,这将生成3个链接,重定向到子页面"ChemicalClass",它将包含3个参数之一,具体取决于被点击的链接.

我的问题是,我怎么能这样做,但动态创建了ActionLinks,因为我不知道要创建多少链接,也不知道字符串的内容.我的目标是在(最好是)列表表单中显示网页上的这些链接,例如:

<ol>
    <li>
        hello
    </li>
    <li>
        goodbye
    </li>
    <li>
        seeya
    </li>
</ol>
Run Code Online (Sandbox Code Playgroud)

列表中的每个元素都是链接而不仅仅是字符串.

Pau*_*der 5

创建一个存储链接集合的视图模型

模型

public class ViewModel
{
    public IList<string> Links { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

在控制器中填充该模型

调节器

public ActionResult Index()
    {
        var model = new ViewModel
            {
                Links = new List<string>
                    {
                        "Hello",
                        "Goodbye",
                        "Seeya"
                    }
            };
        return View(model);
    }
Run Code Online (Sandbox Code Playgroud)

最后你的视图 查看

@model MvcApplication1.Models.ViewModel
        <ol>
        @foreach (var item in Model.Links)
        {
            <li>
            @Html.ActionLink("viewedName", "ChemicalClass", new { mystring = item })
            </li>
        }
        </ol>
Run Code Online (Sandbox Code Playgroud)

您的班级将您的字符串和剃刀循环集合在一起以生成您的链接.