我在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:对不起我的英文!
非常感谢, 干杯!
菲利普
答案 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