Asp.net mvc Umbraco请求上下文中的MVC ActionLink?
我目前正在使用Umbraco 6.1.6和一些mvc视图和控制器。 我尝试做的是以下几点: 在我的razor视图中,我使用以下行创建actionlink:Asp.net mvc Umbraco请求上下文中的MVC ActionLink?,asp.net-mvc,umbraco,actionlink,Asp.net Mvc,Umbraco,Actionlink,我目前正在使用Umbraco 6.1.6和一些mvc视图和控制器。 我尝试做的是以下几点: 在我的razor视图中,我使用以下行创建actionlink: @Html.ActionLink("Klik to search...", "Search", "Search", new { SearchText = "searchterm" }, null) actionlink触发SearchController(是一个SurfaceController)的搜索方法: 当我在Html.BeginUm
@Html.ActionLink("Klik to search...", "Search", "Search", new { SearchText = "searchterm" }, null)
actionlink触发SearchController(是一个SurfaceController)的搜索方法:
当我在Html.BeginUmbracoForm中使用文本框和提交按钮时,效果很好,但当我使用Html.ActionLink时,重定向到当前Umbraco页面会引发异常(在路由值中找不到Umbraco路由定义,请求必须在Umbraco请求的上下文中发出)并且结果页不使用指定的样式模板
我如何强制在Umbraco请求的上下文中创建ActionLink?
这会像其他Umbraco页面一样恢复样式吗
谢谢你抽出时间 首先,您不应该像搜索页面那样使用曲面控制器渲染页面。相反,它们应该用于输出页面组件,例如搜索结果 其次,您可以在搜索页面中使用从
RenderMvcController
继承的控制器
最后,您不能真正使用
Html.ActionLink
来检索Umbraco发布的页面的URL。请参阅以解释原因。相反,您需要使用Umbraco内容缓存,换言之,在内容对象树中查找搜索页面,例如@Model.content.祖先(1).后代(“SearchPage”).First().Url
或类似内容。我认为您的搜索实际上是一个操作,而不是指向操作的链接
在您的控制器中,我们应该看到这一点
//This is to display the actual search form
[ChildActionOnly]
public ActionResult Search()
{
return PartialView("_SearchForm");
}
//This is to display the result of the search
[HttpPost]
[NotChildAction]
public ActionResult Search(string SearchText)
{
if (String.IsNullOrEmpty(SearchText))
{
return CurrentUmbracoPage();
}
SearchResult result = SearchManager.Instance.Search(SearchText);
return PartialView("_SearchResults", result);
}
在umbraco视图中,应使用Html.Action调用此表单
@Html.Action("Search", "MySearchSurface")
我不太同意最后一点。我确信Html.ActionLink对于SurfaceController非常有效。因为surfacecontroller是基于MVC的。因此,它应该起作用。如果不是的话,肖普遗漏了什么或者香农搞砸了什么。他们确实为表面控制者工作。我没说他们没有。我说过,你不能使用
Html.ActionLink
检索已发布页面的URL。它确实有效,但页面不应用布局。我只是得到一个普通的HTML页面。
@Html.Action("Search", "MySearchSurface")