动态创建具有不同URL的网页

时间:2015-07-14 02:36:08

标签: c# asp.net-mvc

无法找到这个......也许我看起来并不正确。但这几乎是我的观点:

<div class="jumbotron">
    @foreach (DataRow dr in ds.Tables[0].Rows)
    {
        <ul>
            <li>@dr["Name"].ToString() - @dr["Distance"].ToString()</li>
        </ul>
    }
</div>

我想为具有不同URL的每个项目符号创建一个新页面(使用c#和MVC),具体取决于名称。我怎样才能做到这一点?我使用ActionLink吗?它与路由有关吗?

基本上让我们说你有一个餐馆列表,我想要它,这样当你点击餐馆时它会带你到另一个网址,如yourdomain.com/restaurant-name,然后我想填充那个页面用一些HTML。我该怎么做呢?

2 个答案:

答案 0 :(得分:1)

默认路由采用以下格式的网址:domain.com/controller/action/id

因此,如果您使用操作RestaurantsController对名为View的控制器进行编码,则可以将其传递给您要查看的餐馆的ID ...因此:

是的,这是VB,我确定你可以翻译

Public Function View(Optional ByVal id As String) As ActionResult

    '  Fetch your restaurant data...
    Dim model As Restaurant = RestaurantRepository.GetRestaurantById(id)

    Return View(model)

End Function  

通过以下网址访问该操作:domain.com/Restaurants/View/whatever-your-restaurant-id-is

然后在你的剃须刀视图中为它做链接,你可以这样做:

@Html.ActionLink("Link text here", "View", "Restaurants", 
                 htmlAttributes:=Nothing, routeValues:= New With {.id = dr["Name"]})

答案 1 :(得分:0)

查看:

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

控制器:

public ActionResult ShowMenu(string id)
        {
            return View(id);
        }