gpt4 book ai didi

asp.net-mvc-3 - MVC3 链接 SEO - 如何从一个 Controller 调用另一个 Controller

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:38:53 25 4
gpt4 key购买 nike

我有一个问题,我不确定如何解释,但我会尝试。我跟着这个:http://www.deliveron.com/blog/post/SEO-Friendly-Routes-with-ASPnet-MVC.aspx我能够实现他们所描述的。但是,如果我有一个页面,我希望从其他 Controller 调用操作,它就不起作用。它不会以这种方式显示链接:URL 中的“this-is-my-link”。

我不知道我做错了什么?

在 Global.asax 中

public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);

routes.MapRoute(
"Default2",
"{controller}/{action}/{id}/{pageTitle}",
new
{
controller = "Home",
action = "Index",
id = UrlParameter.Optional,
pageTitle = UrlParameter.Optional
}
);

}

意见/帮助/常见问题

@Html.ActionLink(FaqStrings.ContactUs, "ContactUs", "Home", new { id = 1, pageTitle = "link text".ToSeoUrl() })

它说它无法解析 ContactUs。它看到的不是 HomeController 的操作,而是 HelpController 的操作。

在家庭 Controller 中

[AllowAnonymous]
public ActionResult ContactUs()
{
var model = new ViewModelContactUs
{
Resultmessage = string.Empty,
Youremail = string.Empty,
Yourmessage = string.Empty,
Yourname = string.Empty
};
return View(model);
}

[AllowAnonymous]
[HttpPost]
public ActionResult ContactUs(ViewModelContactUs model)
{
Log.DebugFormat("HomeController-ContactUs()");

........

        var model2 = new ViewModelContactUs
{
......
};

ModelState.Clear();
return View(model2);
}

最佳答案

尝试将 Controller 移动到 @Html.ActionLink

的 RouteValues 字典部分
@Html.ActionLink(FaqStrings.ContactUs, "ContactUs", new {controller="Home", id = 1, pageTitle = "link text".ToSeoUrl() })

编辑

要解决该逻辑,它必须与 Html.ActionLink 方法的可用签名有关。 Here is the MSDN信息但是...

您使用的方法签名是 Html.ActionLink("Link Text", "Action", "Contoller", RouteValues, HtmlAttributes)。由于您没有传递 HtmlAttributes,它匹配错误并生成了错误的链接。通过将 Controller 移动到 RouteValuesDictionary 或在调用结束时传递 , null 应该可以解决它。但是,除非我需要,否则我个人不喜欢乱扔空值,所以我通常只在 RouteValuesDictionary 中定义 Controller 。

如果您没有传递任何 RouteValues,则调用 Html.ActionLink("Link Text", Action, Controller) 不会有任何问题。

希望这能稍微澄清一点! :)

关于asp.net-mvc-3 - MVC3 链接 SEO - 如何从一个 Controller 调用另一个 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13075395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com