我有一个MVC项目,它位于 /root/folder1/
的服务器上,还有一个指向那里的域名。
所以网址 www.site.com/Home
工作正常。
但是,我的所有@Html.ActionLinks
和@Url.Action
等都呈现为 www.site.com/folder1/Home
这些链接仍然可以使用,但它很难看,而且我不希望知道文件夹名称。
任何人都知道为什么会这样做以及如何阻止它?
答案 0 :(得分: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”} with
Nothing`
希望这有效或至少指出你正确的方向。一个新的MVC项目开箱即用,有一个Controllers
文件夹。这意味着服务器路径看起来像root/controllerFolder/controller/action
,使用上面的工作对我来说很好,只生成符合标准{controller}/{action}/{id}
的Url。假设我需要在AdminController中调用一个需要ID
的编辑操作,因此它知道我想要编辑哪条记录,并且我还想在此按钮中添加一个类,以便我可以设置它或其他任何内容。我会这样做
@Html.ActionLink("Edit", "Edit", "Admin", NEW WITH {.ID = @currItem.Id}, NEW WITH{.Class = "MyButtonClass"})
生成的网址将如下所示
www.mysite.com/Admin/Edit/2
也许这比您需要的多一点,但您的问题似乎实际上遵循标准{controller}/{action}/{id}
。只是在案件中我错过了一些我认为我会尝试至少指向正确方向的东西。