0

应用程序

如果指定了 CoId,我有一个包含给定公司的客户列表的视图,否则,所有注册的客户都会出现在列表中。HanlderId 只代表谁在处理客户端。该列表是分页的(因此是 page 参数)和排序,因此在下面的代码中是 sortField 和 sortDir。一切正常,除了路线。所以...

设置

我有一个带有以下路线的区域注册文件:

context.MapRoute(
                "Companies_Clients",
                "Companies/Clients/Page/{page}/{sortField}/{sortDir}/{HandlerId}/{CoId}",
                new
                {
                    controller = "MyController",
                    action = "Index", 
                    CoId = -1,
                    HandlerId = -1, 
                    page = 1, 
                    sortField = "ClaimId",
                    sortDir = "ASC", 
                    AccidentDate = UrlParameter.Optional,
                    DateOfBirth = UrlParameter.Optional,
                    ClientSurname = UrlParameter.Optional,
                    InvoiceNumber = UrlParameter.Optional
                }
            );

默认为 UrlParameter.Optional 的参数是搜索参数(列表也可以搜索)。

我在 MyController 中有一个动作定义如下:

public virtual ActionResult Index(
    Nullable<int> FeId = -1, 
    Nullable<DateTime> AccidentDate = null, 
    Nullable<DateTime> DateOfBirth = null,
    string ClientSurname = null,
    Nullable<int> InvoiceNumber = null, 
    int page = 1, string sortField = "ClaimId", string sortDir = "DESC", int SolicitorId = -1)
{
    var model = service.BuildModel(FeId, AccidentDate, DateOfBirth, ClientSurname, InvoiceNumber, page, sortField, sortDir, SolId);
    return View("Index", model);
}

我希望对 Index 的所有调用都与我的“Companies_Clients”路由匹配。

问题

@Html.ActionLink 帮助程序调用(参见下一个代码块)生成的 url 与“Companies_Clients”路由不匹配。

//This creates a link with a url that matches the default route (the usual one)
@Html.ActionLink("Sort by Client Name", MVC.MyArea.MyController.Index(feId, accidentDate, dateOfBirth, clientSurname, invoiceNumber, currentPage, "ClientSurname", "DESC"))

与路线匹配的是我的 mvcSiteMap 节点:

<mvcSiteMapNode title="Clients" area="Companies" controller="MyController" action="Index" key="clients">

即这个mvcsitemap节点生成的路由是:

/Companies/Clients/Page

问题

琐碎的问题是:

我究竟做错了什么??为什么 Html.ActionLink 调用不匹配路由?

另一个问题是:

为什么mvcsitemapnode生成的路由中没有出现默认参数?

4

0 回答 0