如何改变网址为MVC4网站

本文关键字:MVC4 网站 何改变 改变 | 更新日期: 2023-09-27 18:07:17

我需要更改地址栏上的URL

我寻找URL Rewrite,但据我所见,它适用于这样的请求:

url.com/mypage.aspx?xp=asd&yp=okasd

并将其转换为:

url.com/mypage/asd/okasd
http://www.iis.net/downloads/microsoft/url-rewrite

那不是我的范围。我已经让MVC Routesurl.com/mypage一起工作了。问题是,当我输入URL我重定向(这是我想要的行为)到url.com/otherpage/actionX?param=value。问题是,我仍然希望地址栏显示url.com/mypageURL Rewrite会工作吗?我问,因为我不知道它是否会工作,因为它是一个内部重定向(RedirectToAction)而不是一个"常规"访问。如果有人想知道为什么我不能为此制作路由,正如我在问题中所解释的那样,我已经有一个规则,即url.com/mypage重定向到决定调用什么动作的"路由器"。

我看到了一些问题,但我认为它们没有涵盖我的具体问题:

MVC3更改url

c# -如何在mvc中重写URL

这是我的路线:

routes.MapRoute(
    "Profile", // Route name
    "{urlParam}", // URL with parameters
    new { controller = "Profile", action = "Router" } // Parameter defaults
);

Router action中,我根据在urlParam上完成的一些验证重定向到正确的action。我需要这个行为,因为每个动作返回一个不同的View

更新我的标签,因为我现在使用MVC4

谢谢。

如何改变网址为MVC4网站

我曾经在windows上运行一个php站点。在它最初运行的linux系统上,它有一个重写定义,使站点在一个php文件(index.php)中处理所有请求。

我已经安装并配置了URL重写与以下参数

Name              : all to index.php
Match URL ------------------------------
 Requested URL    : Matches the Pattern
 Using            : Regular Expressions
 Pattern          : (.*)
 Ignore Case      : Checked
Conditions -----------------------------
 Logical Grouping : Match All
    Input         : {REQUEST_FILENAME}
    Type          : Is Not a File
Action ---------------------------------
 Action Type      : Rewrite
 Action Properties:
   Rewrite Url         : /index.php?$1
   Append Query String : Checked
   Log Rewritten URL   : Checked

这使得所有对站点的请求(除了CSS和js文件)都由index.php

处理。

,所以url.com/user/1在服务器端作为url.com/index.php?/user/1处理因为它工作在服务器端客户端url保持不变。

使用这个作为基础,你可以构建一个重写(而不是重定向)。

服务器。传输正是你所需要的,但这在MVC上是不可用的。

在MVC世界中,你可以使用在这个线程中定义的TransferResult类。

与……你添加代码到你的ROUTE操作,处理urlParam一如既往,而不是"重定向"(RedirectToAction)用户到一个新的URL,你只是"转移"他/她到一个新的操作方法,而不改变URL。

但是有一个问题(我想,我还没有测试过)…如果那个新页面回发了什么……它不会使用路由器的action URL (url.com/mypage),而是实际的action (url.com/otherpage)

希望能有所帮助。

在我看来,你可以尝试以下方法:

  1. 从Action方法返回空结果或重定向结果。
  2. 你还需要为你需要的URL设置和构建出站路由。

其次,如果这些都不起作用,处理这种情况的粗略方法是使用Div标记并用Action方法发出的任何HTML替换Div的内容。我在这里假设,在您的问题上下文中,您可以调用jquery ajax调用。

问题是你重定向用户(使用302 http代码)到一个新的位置,所以浏览器,重新加载页面。你需要修改路由,让它直接指向你的控制器。路由注册应该是路由。MapRoute("specific", "my page", new {controller =" otherpage", action="actions", param="value"})。这个路由应该先注册