1

我有一个位于服务器上的 MVC 项目/root/folder1/,以及一个指向那里的域名。所以 url,www.site.com/Home工作正常。

但是,我所有的@Html.ActionLinksand@Url.Action等都呈现为www.site.com/folder1/Home

链接仍然有效,但很难看,我不希望知道文件夹名称。

任何人都知道它为什么这样做以及如何阻止它?

4

1 回答 1

1

你应该使用这样的东西ActionLinks

@Html.ActionLink("Link Text", "ActionName", "ControllerName") 'NOTE YOU DO NOT NEED TO INCLUDE THE Controller part of the controller name. So for say AdminController you could simply set the controllerName in the ActionLink to `Admin`

ActionLinks如果您必须将一个Id或其他值传递给控制器​​,您也可以像下面这样设置。

@Html.ActionLink("Link Text", "ActionName", "ControllerName", New With {.YourVariableName = "SomeValue"})

如果您需要为正在呈现的控件指定 HTML 属性,您可以设置更多的重载。

@Html.ActionLink("Link Text", "ActionName", "ControllerName", New With {.YourVariableName = "SomeValue"}, New With {.htmlAttributeName = ""}) 

如果您需要指定HTML attribute而不需要将值传递给控制器​​,您可以简单地替换New With{.YourVariableName = "SomeValue"} withNothing`

希望这有效或至少为您指明正确的方向。开箱即用的全新 MVC 项目有一个Controllers文件夹。这意味着服务器路径看起来像root/controllerFolder/controller/action使用上面的对我来说很好,并且只生成遵循标准的 Url {controller}/{action}/{id}。假设我需要在 AdminController 中调用一个 Edit Action,它需要一个ID这样它知道我要编辑的记录,并且我还想向这个按钮添加一个类,以便我可以设置它的样式或其他任何东西。我会这样做

 @Html.ActionLink("Edit", "Edit", "Admin", NEW WITH {.ID = @currItem.Id}, NEW WITH{.Class = "MyButtonClass"})

生成的 URL 将如下所示

    www.mysite.com/Admin/Edit/2 

也许这比您需要的多一点,但您的问题似乎实际上遵循了标准{controller}/{action}/{id}。以防万一我错过了一些我认为我会尝试至少为您指出正确方向的东西。

于 2013-11-08T15:08:24.950 回答