请问在.net mvc3.0中,如何在action之间传递参数,切记不能在地址栏中看到

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问在.net mvc3.0中,如何在action之间传递参数,切记不能在地址栏中看到相关的知识,希望对你有一定的参考价值。

我用RedirectToAction传,但是在地址栏中会看到,有没有什么好的办法,谢谢!

少量的可以用Session,不止地址栏,客户端整个都看不到 参考技术A 用 new View("View名称") 可以指定和Action不同名的View 参考技术B 你有用viewmodel 来建立吗? 你可以用 html.hiddenfor 来隐藏。 参考技术C 讲台上,演讲者绘色绘色的在演说小明买彩票中奖了,他欣喜若狂

如何在 ASP.NET MVC 中的 URL 之后允许额外的文本?

【中文标题】如何在 ASP.NET MVC 中的 URL 之后允许额外的文本?【英文标题】:How do I allow extra text after my URLs in ASP.NET MVC? 【发布时间】:2011-01-19 03:46:25 【问题描述】:

我的应用中只有这条路线:

routes.MapRoute(
    "Default",                            
    "controller/action/id",         
    new  controller = "Home", action = "Index", id = "" 
);

这适用于以下网址:

/Blah/索引 /Blah/创建 /Blah/详细信息/5

我想像这样在最后一个中添加文本:

/Blah/Details/5/Page-Title-Here-Or-Whatever

所以我的问题是:

我的路线应该是什么样子才能实现这一点?(或者如果它与路线没有任何关系......我该怎么办?)

【问题讨论】:

【参考方案1】:

MSDN 链接:http://msdn.microsoft.com/en-us/library/cc668201.aspx

routes.MapRoute( 
    "Default",                             
    "controller/action/id/*allTheRest",          
    new  controller = "Home", action = "Index", id = "", allTheRest=""  
); 

函数签名应该类似于

    public ActionResult MyAction(int? id, string rest)
    
        this.TempData["ID"] = id ?? -1000;
        this.TempData["REST"] = rest ?? "Not Provided";
        return View();
    

【讨论】:

这不太适合我...我需要重新启动 IIS 或清除某处的缓存吗? 您使用的是哪个版本的 MVC?这是几周后将包含在 VS2K10 中的 MVC 2 版本。 我从头开始创建了一个项目,这确实有效,谢谢!我只需要弄清楚为什么它在我现有的 IIS 托管项目中不起作用... 在新问题中发布您的路线,有人会帮助您调试。发布您希望匹配的 URL。

以上是关于请问在.net mvc3.0中,如何在action之间传递参数,切记不能在地址栏中看到的主要内容,如果未能解决你的问题,请参考以下文章

请问asp.net中如何在后台代码里提交表单

经典ASP.NET MVC3.0入门详解

asp.net mvc3.0中视图引擎razor和ASPX可以交互使用吗

Asp.Net MVC3.0网站统计登录认证的在线人数

asp.net mvc中html.Action问题

MVC3.0 中Razor 学习