【问题标题】:Routing Get and Post to Different URL路由获取和发布到不同的 URL
【发布时间】:2013-06-18 07:07:08
【问题描述】:

我目前的路线

  routes.MapRoute(
                name: "Start",
                url: "Home",
                defaults: new {controller = "Home", action = "GetStarted", id = UrlParameter.Optional}
                );
        This route redirect to the URL /Home/

操作结果

  [ActionName("GetStarted")]
        public ActionResult getStart(){
}

我需要根据另一个动作结果创建另一个路由,如下所示,即 HttpPost。

        [HttpPost]
        [EnsureHttpAttribute]
        [ActionName("GetStarted")]
        public ActionResult getStart(string ddl_week, string ddl_day){
    }

我要重定向的网址是 /Home/Program。我怎样才能做到这一点?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-4 url-routing


    【解决方案1】:

    将您的路线更改为:

    routes.MapRoute(
                    name: "Start",
                    url: "Home/{action}",
                    defaults: new {controller = "Home", action = "GetStarted", id = UrlParameter.Optional}
                    );
    

    如果你真的想发布到不同的 URL,你必须在你的表单中指定,我假设在你的 GetStarted 视图中。

    @using (Html.BeginForm("Program", "Home", FormMethod.Post, null }))
    

    在您的控制器中,更改:

        [HttpPost]
        [EnsureHttpAttribute]
        [ActionName("GetStarted")]
        public ActionResult getStart(string ddl_week, string ddl_day){
        }
    

        [HttpPost]
        [EnsureHttpAttribute]
        [ActionName("Program")]
        public ActionResult Program(string ddl_week, string ddl_day){
    
        }
    

    【讨论】:

    • Noo.. 我不想创建新操作。每当我调用这个 HttpPost 操作时,我的 url 必须是 /Home/Program。所以我需要创建另一条路线。我怎样才能创建这个?
    • 如果不创建新的 actionresult 我该怎么做?
    • 您必须有一个程序的 Actionresult。往上看。去掉 GetStarted 的 httpost 版本,因为它不是必需的。您需要让您的 html 表单指向 Program ActionResult。
    • 我不想修改我的“开始”路线。我需要为 GetStart 发布操作创建另一条路线,并且在此操作调用时 url 应该是 /Home/Program。
    • 第一条路线运行良好..当 Post 操作调用时我需要一条新路线。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-11
    • 2012-09-11
    • 1970-01-01
    • 2012-01-03
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多