动态地为不同的routevalues创建网页

本文关键字:routevalues 创建 网页 动态 | 更新日期: 2023-09-27 18:02:35

这是我的控制器:

 public ActionResult ShowMenu(string id)
        {
            ViewBag.Id = id;
            return View(id);
        }

我基本上是根据不同的菜单创建不同的网页。我创建的视图:

<div class="test">
    @foreach (DataRow dr in ds.Tables[0].Rows)
    {
        <ul>
            <li>@Html.ActionLink("Test", "ShowMenu", routeValues: new {id = "test" })</li>
        </ul>
    }
</div>

然后我还为ShowMenu创建了一个View ..但问题是:我如何为ID创建多个网页?域名看起来像mydomain.com/ShowMenu/test

当for循环不断迭代时,test将改变为不同的值,我需要为每个id参数创建不同的网页。

我只想使用我的ShowMenu View,通过它,根据id参数

动态地为不同的routevalues创建网页

动态更改网页

您需要使用DataRow中的一些属性,就像下面我如何访问dr["id"]一样。

<div class="test">
    @foreach (DataRow dr in ds.Tables[0].Rows)
    {
        <ul>
            <li>@Html.ActionLink("Test", "ShowMenu", routeValues: new {id = dr["id"] })</li>
        </ul>
    }
</div>

顺便说一下,传递数据表到你的视图不是很常见的MVC,我知道。相反,您通常描述一个模型并传递它。例如

public class Product
{
    public int Id {get; set;}
    public string Name {get; set;}
}
public ActionResult List()
{
    List<Product> products = Database.GetProducts();
    return View(products);
}
public ActionResult Details(string id)
{
    Product product = Database.GetProducts().Where(p => p.Id == id).Single();
    return View(Product);
}