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

时间:2014-07-29 18:28:25

标签: c# asp.net-mvc asp.net-mvc-4 razor

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

我的列表可能包含以下内容:

"hello"
"goodbye"
"seeya"

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

@Html.ActionLink("viewedName", "ChemicalClass", new { mystring = "hello" })
@Html.ActionLink("viewedName", "ChemicalClass", new { mystring = "goodbye" })
@Html.ActionLink("viewedName", "ChemicalClass", new { mystring = "seeya" })

根据我的理解,这将生成3个链接,这些链接将重定向到子页面“ChemicalClass”,它将包含3个参数中的一个,具体取决于所点击的链接。

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

<ol>
    <li>
        hello
    </li>
    <li>
        goodbye
    </li>
    <li>
        seeya
    </li>
</ol>

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

3 个答案:

答案 0 :(得分:5)

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

<强>模型

public class ViewModel
{
    public IList<string> Links { get; set; }
}

在控制器中填充该模型

<强>控制器

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

最后你的观点 查看

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

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

答案 1 :(得分:0)

你可以使用这样的东西。

                <ul>
                 @foreach (var x in Model)
                 {
                     <li><a href="#">@x.myString </a></li>
                  }
                </ul>

答案 2 :(得分:0)

我的一个观点中有类似的内容:

@foreach (var item in Model.MyList)
    {
        <li>
            @Html.ActionLink("Select", "ActionName", "Chemical", new {id = item.AdmNum}, new { @class = "label label-info"})
        </li>
    }