我怎样才能制作这条路线(ASP.Net MVC2)?

时间:2010-04-11 17:08:03

标签: c# asp.net asp.net-mvc asp.net-mvc-2 routing

我在asp.net mvc中打招呼,我有一些关于路线的doutbs。

我正在开发一个管理文档的系统,我需要创建一个这样的URL:

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

并且应用程序正在处理这些网址:

“凭证/行政/合同” - (默认情况下,索引操作列出“合同”类型的凭证) “文件/行政/合同/新” - (控制器中的新动作) “文件/行政/合同/ 10” - (控制器中的详细行动) “文件/管理/合同/编辑/ 10” - (在控制器中编辑动作)

文档将是一个控制器,而管理只是URL中的描述,用于识别“合同”的文档是否为管理...

所以,我的怀疑是关于我的控制器和动作,应该如何签署控制器的方法?我需要创建一个名为Documents的区域才能更容易吗?

PS:对不起我的英文!

非常感谢, 干杯!

菲利普

2 个答案:

答案 0 :(得分:0)

只有1个控制器文档。

在此控制器中有动作索引 ,新建和编辑。

所有操作都需要参数documentType和documento或(更好)你有一个 Viewmodel作为具有属性documentType和documento。

的参数

将此Viewmodel传递给视图。在视图中使用Html.ActionLink生成具有documentType和documento set的链接。

答案 1 :(得分:0)

 routes.MapRoute("Documentos", 
            "Document/{documentType}/{documento}/{action}/{id}", 
            new 
            { 
                controller = "Document", 
                documentType = "", 
                documento = "", 
                action = "Index", 
                id = UrlParameter.Optional 
            }); 

当您希望“文档/管理/合同”的网址默认为列表时,您必须像这样制作硬编码路线:

 routes.MapRoute("Documentos", 
            "Document/Administrative/Contract", 
            new 
            { 
                controller = "Document", 
                documentType = "Administrative", 
                documento = "Contract", 
                action = "List"
            }); 

您的操作应明确包含与您在路径中使用的参数相同的名称。或者组合模型类中的参数。

public ActionResult(string documentType, string documento, int id)

public ActionResult(Document doc)

如果您使用Model类Document。

public class Document
string documentType;
string documento;
int id;

HTH