1

试图actionlink在代码后面编写一个辅助方法来生成。

public static String CodeBehindActionLink(UrlHelper url, String actionloction,string actiontext)
        {
            var linkBuilder = new TagBuilder("a");

            linkBuilder.MergeAttribute("href", url.Action(actionloction)); //url is culprit here

            linkBuilder.SetInnerText(actiontext);

            return linkBuilder.ToString();
        }

被调用者

CodeBehindActionLink(new  
 UrlHelper(Request.RequestContext), 
Url.Action("A", "B", new { area = "C"}),"SomeName");

预期出来的就像 <a href="C/B/A">SomeName</a>

但当前上下文在锚点中添加了不必要的路线。如果它在相同的上下文中,则锚标记看起来像<a href="C/B/C/B/A" >SomeName</a>

我们如何覆盖这种行为。

找到的解决方案不需要传递请求上下文。只通过actionlocation

linkBuilder.MergeAttribute("href", actionloction); 

和被调用者看起来像

CodeBehindActionLink(
        Url.Action("A", "B", new { area = "C"}),"SomeName");

因为Url.Action已经照顾好route

4

0 回答 0