1

我正在编写我的第一个 MVC3 Web 应用程序。我在我的 SiteLayout.cshtml 中有这样的导航编码。

<table width="950" border="0" align="center" cellpadding="0" cellspacing="0" style="height: 40px;">
            <tr align="center">
                <td>@Html.ActionLink( 
                    "Home", 
                    "Index", 
                    null, 
                    new { @class= "link1"}) 
                </td>
                <td><img src="@Url.Content("~/Content/images/img3.gif")" alt="" width="2" height="40" /></td>
                <td>@Html.ActionLink( 
                    "Events", 
                    "Events", 
                    null, 
                    new { @class= "link1"}) 
                </td>
                <td><img src="@Url.Content("~/Content/images/img3.gif")" alt="" width="2" height="40" /></td>
                <td>@Html.ActionLink( 
                    "Membership", 
                    "Membership", 
                    null, 
                    new { @class= "link1"}) 
                </td>
                <td><img src="@Url.Content("~/Content/images/img3.gif")" alt="" width="2" height="40" /></td>
                <td>@Html.ActionLink( 
                    "Photos", 
                    "Photos", 
                    null, 
                    new { @class= "link1"} )
                </td>
                <td><img src="@Url.Content("~/Content/images/img3.gif")" alt="" width="2" height="40" /></td>
                <td>@Html.ActionLink( 
                    "About Us", 
                    "AboutUS", 
                    null, 
                    new { @class= "link1"})
                </td>
                <td><img src="@Url.Content("~/Content/images/img3.gif")" alt="" width="2" height="40" /></td>
                <td>@Html.ActionLink( 
                    "Contact Us", 
                    "ContactUs", 
                    null, 
                    new { @class= "link1"})</td>
            </tr>
        </table>``

每当我切换到使用相同 layout.cshtml 的第二个控制器注册时,操作链接返回的结果是

http://localhost:49365/registration/Photos

即使当前在注册控制器上,我如何使操作链接指向站点控制器?我已经尝试将“站点”放在我当前具有空值的位置。如果我这样做,那么它可以正常工作,但会显示这个 url

http://localhost:49365/Site/Photos?class=link1

并且 css 类不再应用于链接。我希望的网址是相同的网址

http://localhost:49365/site/photos

如果我使用默认站点控件中的链接,则会显示该链接。任何指导将不胜感激。

许多祝福,

贾里德

4

1 回答 1

1

这只是一个重载决议的问题。所有重载的列表可以在MSDN上找到。

正如所写,你最终使用了HtmlHelper, string, string, object, object 重载,你的第一个nullrouteValues,所以匿名对象是你的htmlAttributes.

你在正确的轨道上通过"Site"而不是null获得正确的控制器,但这会让你使用HtmlHelper, string, string, string, object, object 超载。第一个对象仍然是routeValues,这就解释了为什么它变成了一个查询字符串。

要指定htmlAttributes,您可以继续传递一个null占位符routeValues

@Html.ActionLink( 
                "Photos", 
                "Photos",
                "Site", 
                null, 
                new { @class= "link1"} )

或者你使用了命名参数

@Html.ActionLink( 
                "Photos", 
                "Photos",
                "Site", 
                htmlAttributes: new { @class= "link1"} )
于 2012-04-25T20:58:06.113 回答