【问题标题】:Asp.Net MVC Route Table and Controller ActionsAsp.Net MVC 路由表和控制器操作
【发布时间】:2009-01-23 06:12:05
【问题描述】:

我正在创建一个包含成员及其个人资料的目录。我在.net 中使用MVC 框架。

我有一个视图允许您根据某些条件查找成员,因此我的控制器有一个 Find() 操作结果,然后是另一个接受后置动词的视图。因此,somesite.com/members/find 会显示搜索工具,然后一旦提交表单,相同的 url 就会显示结果。我现在希望成员名称链接到同一控制器中的另一个 actionresult 方法以显示他们的个人资料,并且我希望 url 遵循此模式 somesite.com/members/{username}。

我如何创建一个控制器方法来做到这一点? 还有比这更多的吗?
我需要在 global.asax 中绘制新路线吗?

感谢您的帮助。

【问题讨论】:

    标签: .net asp.net-mvc model-view-controller controller routes


    【解决方案1】:

    首先在控制器上创建您的操作方法,如下所示:

    public ActionResult Profile(string userName)
    {
        // Do What you want with the userName
        throw new System.NotImplementedException();
    }
    

    然后在 global.asax 文件中创建一个新路由来处理 somesite.com/members/{username},如下所示:

    routes.MapRoute(
        "Profile",
        "members/{username}",
        new { controller = "Members", action = "Profile", userName = "" }
    );
    

    就是这样。我不确定你在调用什么控制器来承载动作方法。我假设成员。

    【讨论】:

    • 感谢您的快速回复... maproute 的名称和 actionResult 方法名称(即 Profile - Profile)之间是否存在关联?
    • 不,这只是我给路线起的名字。
    • 我添加了您建议的两件事,但在尝试后得到了任何结果。浏览到 somesite.com/members/someuser 并且未调用配置文件操作...只是收到“找不到资源”消息。再次感谢
    • 您添加操作的控制器名称是什么?我在发布答案之前做了一个快速测试,效果很好。
    • 我的控制器是“供应商”类名 VendorController...每个供应商都应该有一个配置文件。因此,在 global.asax 中,我添加了一个名为“Profile”的路由,其 URL 为“vendor/{username}”和“new { controller = “Vendor”,action = “Profile”,userName = “”}”作为默认值
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多