html.actionlink

时间:2009-09-14 04:00:20

标签: asp.net-mvc actionlink

我刚刚开始使用asp.net mvc .. 因为我不熟悉它,我只想问一个关于actionlink html helper的问题..

我在index.aspx主视图中有这段代码..

    <%  Dim _news As datatable = ViewData.Model%>
    <%  For count As Integer = 0 To _news.Rows.Count - 1%>
    <%  Dim id As Integer = _news.Rows(count).Item("IDnews")%>
    <%=_news.Rows(count).Item("newsTitle")%>
    <p>
    <%=_news.Rows(count).Item("newsContent")%><br />
    <%=Html.ActionLink("Read More..", "NewsPublic", "Administration", New With {id})%>
    </p>
    <%Next%>

如果我点击actionlink,我希望它能让我看到这个网址: /行政/ NewsPublic / 7 但它给了我这个网址: /主页/ NewsPublic?长度= 14

actionlink是否仅在同一个控制器中传递id?

提前谢谢你!

2 个答案:

答案 0 :(得分:4)

要呈现指向 / Administration / NewsPublic / 7 的链接,您应该使用

<%=Html.ActionLink("Read More..", "NewsPublic", "Administration", 
    New With {.id = 7}, Nothing)%>

第五个参数使编译器选择

ActionLink(string linkText, string actionName, string controllerName, 
    object routeValues, object htmlAttributes)

扩展方法重载而不是

ActionLink(string linkText, string actionName, object routeValues, 
    object htmlAttributes)

不要忘记添加参数分配

New With {.id = 7}

而不是

New With {.id}

答案 1 :(得分:1)

默认情况下,Html.ActionLink将使用当前控制器。但是ActionLink()有大约十几个重载,并且它有多个版本可以接受控制器参数。尝试:

Html.ActionLink("Read More...", 
                 "NewsPublic", 
                 "Administration",
                 New With { .id = id },
                 null)