我想发布一些关于ASP.Net MVC的问题.我不熟悉web开发,但我被分配到一个项目的web部件.我们正在做以下工作:首先,我们创建get&set个人数据的属性:

public class Person
{
    public int personID {get;set;}
    public string personName {get;set;}
    public string nric {get;set;}
}

登录后,我们将数据放入class Person对象中,使用RedirectToAction,如下所示:

return RedirectToAction("profile","person",new { personID = Person.personID});

它工作正常,但参数显示在URL中.我怎样才能把它们藏起来呢

推荐答案

该参数显示在URL中,因为这是RedirectToAction的第三个参数——路由值.

默认路径为{controller}/{action}/{id}

所以这个代码:

return RedirectToAction("profile","person",new { personID = Person.personID});

将生成以下URL/路由:

/Person/Profile/123

如果你想要一条更干净的路由,比如:

/people/123

创建新路由:

routes.MapRoute("PersonCleanRoute",
                "people/{id}",
                new {controller = "Person", action = "Profile"});

你的URL应该是干净的,就像上面所说的.

或者,您可能根本不喜欢使用ID,您可以使用其他的唯一标识符-比如昵称.

因此,URL可能如下所示:

people/rpm1984

要做到这一点,只需更改您的路由:

routes.MapRoute("PersonCleanRoute",
                    "people/{nickname}",
                    new {controller = "Person", action = "Profile"});

以及你的行动方法:

public ActionResult Profile(string nickname)
{

}

和您的RedirectToAction代码:

return RedirectToAction("profile","person",new { nickname = Person.nickname});

这就是你想要的吗?

Asp.net相关问答推荐

调用context.Users和context.Set User有什么区别?

无法从部署在应用程序负载均衡器后面的 AWS ECS 上的应用程序发送 HTTP/S 请求

测试项目中的 App.config

ASP.NET 控件无法在 Visual Studio 2008 的代码隐藏中引用

如何使用文件上传控件 Select 多个文件?

从 GUID 中删除破折号是个好主意吗?

使用 ASP.NET WebForms 的 jQuery DataTables 服务器端处理

MvcBuildViews true 与 ASP.NET MVC 2 中的实体框架

Jquery asp.net 按钮单击事件通过 ajax

温莎城堡有什么缺点吗?

更改后未应用 CSS

在 Android/Java 和 C# 中计算 SHA256 哈希

应该如何使用 RedirectToRoute?

如何在 ASP.NET 中通过 LAN 访问您的网站

如何使div按钮提交其所在的表单?

使用 .NET 连接到 AS400

远程计算机无法连接到 Visual Studio Web 服务器

ASP.NET 按钮重定向到另一个页面

将字典绑定到中继器

为什么在 MVC4 Razor 布局文件中无法识别 @Scripts 和 @Styles 命令?