首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么我的routeValues变量在视图加载和我在ASP.NET MVC中点击我的Html.ActionLink之间改变?

在ASP.NET MVC中,当你在视图中使用Html.ActionLink方法时,它会生成一个包含路由值的链接。这些路由值是根据当前请求的上下文生成的。当你在视图加载时,routeValues变量的值是根据当前请求的路由数据设置的。但是,当你点击Html.ActionLink时,它会生成一个新的请求,并且在生成链接时,它会使用当前路由数据中的值,而不是视图加载时的值。

这种行为是因为在ASP.NET MVC中,每个请求都是独立的,它们之间没有共享的状态。当你点击Html.ActionLink时,它会生成一个新的请求,并且在生成链接时,它会使用当前请求的路由数据。因此,如果你在视图加载时设置了routeValues变量的值,然后在点击Html.ActionLink时,它会使用当前请求的路由数据,而不是视图加载时的值。

要解决这个问题,你可以在Html.ActionLink方法中显式地指定routeValues的值,而不是依赖于当前请求的路由数据。例如:

代码语言:txt
复制
@Html.ActionLink("Link Text", "ActionName", "ControllerName", new { id = Model.Id }, null)

在上面的代码中,我们将routeValues参数设置为一个匿名对象,其中包含我们想要传递的路由值。这样,不管当前请求的路由数据如何,Html.ActionLink都会使用我们指定的值。

另外,如果你希望在点击Html.ActionLink时保持routeValues变量的值不变,你可以将它存储在一个隐藏字段中,并在每次请求时将其传递给服务器。然后,在服务器端,你可以使用这个隐藏字段的值来设置routeValues变量的值。

总结起来,routeValues变量在视图加载和点击Html.ActionLink之间改变是因为每个请求都是独立的,它们之间没有共享的状态。为了解决这个问题,你可以显式地指定Html.ActionLink方法中的routeValues参数的值,或者将routeValues的值存储在隐藏字段中,并在每次请求时传递给服务器。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ASP.NET MVC编程——视图

基本规则 1)变量 @后直接变量即可 2)代码块 为使用表达式或多行代码,@后跟大括号将多行代码包括大括号 3)“+” 对于加号连接两个字符串变量或属性,使用小括号将他们括起来 4)插入HTML或文字...每一行前面加上“@:” 5)使用注释 使用@*和*@将要注释部分包起来 6)用@@页面上显示@ @using 一个View引入此页所需程序集命名空间。...hostName:URL 主机名 fragment:URL 片段名称(定位点名称) routeValues:路由参数 htmlAttributes:HTML 特性 例: @Html.ActionLink...js文件,那么可以使用_LayoutOther.cshtml视图中定义section 节来加载只有此页面使用js文件,而把公共js文件放在_Layout.cshtml视图文件 例如Index.cshtml...Scott Allen,孙远帅/邹权译  ASP.NET MVC4 高级编程(第四版) 3.黄保翕,ASP.NET MVC4开发指南 4.蒋金楠,ASP.NET MVC4框架揭秘 5.https://www.asp.net

3K100

精通MVC3摘译(2)-生成URL

处理发来URL只是MVC一部分,我们也需要生成一些URL植入到我们view,让用户点击,并提交表单到目标controller和action,下面会介绍一些生成URL技巧。...比如下面的URL会被放置view: About this application 这个HTML元素创建了一个链接,当点击该链接,会定位到Home...我们可以改变路由模式,让视图中生成URL链接自动改变。 应用程序通常都有多个路由,理解如何选择路由生成URL非常重要。路由系统处理路由,按照他们被加入RouteCollection对象顺序。...2.我们提供片段变量值必须符合路由中默认变量,这些变量存在默认值,但是URL模式没出现,比如下面的,myVar是一个默认变量 routes.MapRoute("MyRoute", "{controller...之前提过,路由系统处理URL时候对controller和action没有任何概念,这就可以让路由系统可以更广泛使用在其他ASP.NET应用程序。

80610

ASP.NET MVC框架(第四部分): 处理表单编辑和提交场景

我们是用在第二部分讨论过Html.ActionLink辅助方法来显示这些HTML超链接(譬如,Edit)"Edit"链接被点击后,...ASP.NET MVC框架,表单输入和编辑场景一般是通过Controller类上呈示2个Action方法来处理。...第一个预览版,只有"ActionLink"方法是内置于System.Web.Extensions(目前实现核心ASP.NET MVC框架程序集)。...点击这里下载一个内含我们在上面建造完整应用源代码.ZIP 文件。 将来帖子里,将讨论如何处理表单输入和编辑场景数据验证和错误复原情形。...将讨论一些促进快速应用开发内置数据和安全支架(scaffolding)。将讨论你如何在MVC框架中使用ASP.NET AJAX进行启用AJAX编辑。

5.1K70

ASP.NET MVC使用Bootstrap系列(3)——使用Bootstrap 组件

Bootstrap元素在上一篇文章涉及到,具体可以参考《ASP.NET MVC使用Bootstrap系列(2)——使用Bootstrap CSS和HTML元素》。...在这篇博客将继续探索Bootstrap丰富组件以及将它结合到ASP.NET MVC项目中。...为了更好展示Bootstrap导航条,ASP.NET MVC_Layout.cshtml布局页创建一个fixed-top导航条,当然它是响应式——小尺寸、低分辨率设备上打开时,它将会只展示一个按钮并带有...ASP.NET MVC默认_Layouts.cshtml布局页已经帮我们实现了上述功能,打开它对其稍作修改,如下代码片段所示: <div class="navbar navbar-inverse...这样当<em>点击</em>ID为start<em>的</em>按钮时动态为进度条更新了0-100<em>的</em>数值。 小结 在这篇博客<em>中</em>,探索了Bootstrap<em>中</em>丰富<em>的</em>组件,并将它结合到<em>ASP.NET</em> <em>MVC</em>项目中。

6.5K100

HtmlHelper(辅助产生HTML之用)

弱类型: 1.使用HTML辅助方法输出超链接 (1)View输出ASP.NET MVC超链接通常会用Html.ActionLink辅助方法,该方法用于产生文字链接,其文字部分会自动进行HTML编码...(HtmlEncode) 语法范例 说明 @Html.ActionLink("链接文字","ActionName") 这是最基本用法,要跳转控制器为本视图所在控制器。...",new{id=123,page=5}) 当需要设定额外RouteValue时,可以第三个参数传入object类型数据 @Html.ActionLink("链接文字","ActionName",...null,new{@class="btnLink"}) 当需要传入超链接额外HTML属性时,可以将参数加载第四个参数上。...ASP.NET MVC还有另一个Html.RouteLink辅助方法,其用法与Html.ActionLink非常相似,差别仅在于输入参数要以RouteValue为主。

1.1K30

ASP.NET MVC HtmlHelper类

ASP.NET MVC之 HtmlHelper ASP.NET MVC项目的开发,一般会默认使用Razor视图来进行View层编写,从而实现高效率C#/HTML代码混写。...先贴一下MSDNHtmlHelper链接,MSDN对每一个构造函数、属性、方法和扩展方法都做了说明,这里就常用部分方法做一下简要展示。...链接 @Html.ActionLink() 生成超链接,并自动根据路由进行匹配。 Eg: @Html.ActionLink("超链接eg", "About","Hello") ?...namespace System.Web.Mvc 注意:为什么要改命名空间为System.Web.Mvc?...,于是我们将命名空间与HtmlHelper类所在命名空间保持一致。   4.页面我们就可以使用我们自己写扩展方法了 @Html.MyExtHtmlLabel("EdisonChou")

1.8K30

Asp.net mvc 知多少(三)

由于个人技术水平和英文水平也是有限,因此错误在所难免,希望大家多多留言指正。 本节主要讲解视图引擎及HtmlHelper使用 Q24. ASP.NET MVC主要命名空间有哪些? Ans....最初,ASP.mvc只有一种视图引擎web forms(aspx) ,从ASP.NET MVC3 引入了新Razor视图引擎。除此之外,还有 Spark, NHaml 等第三方视图引擎。 Q26....@Html.ActionLink("SignUp", "SignUp") Q28. 如何自定义视图引擎? Ans. ASP.NET MVC 是一个开源并且高度可扩展框架。...通过global.asax.cs文件Application_Start()方法注册自定义视图引擎,来告诉ASP.NET MVC来使用自定义视图引擎替换默认视图引擎。...ASP.NET MVC提供了基于jquery非侵入ajax。非侵入式ajax意味着通过使用帮助类方法去定义ajax功能而不是通过view添加js代码块。 Q38.

2.3K60

Asp.Net MVC4入门指南(6):验证编辑方法和编辑视图

本节,您将开始修改为电影控制器所新加操作方法和视图。然后,您将添加一个自定义搜索页。 浏览器地址栏里追加/Movies, 浏览到Movies页面。并进入编辑(Edit)页面。...相反,查询执行会被延迟,这意味着表达式计算延迟,直到取得实际值或调用ToList方法。SearchIndex示例,SearchIndex 视图中执行查询。...添加视图对话框,指定你要将Movie对象传递给视图模板作为其模型类。框架模板列表,选择列表,然后单击添加....以上创建搜索方法和视图示例是为了帮助大家更好掌握MVC知识,进行MVC开发时,开发工具也可以大大帮助提高工具效率。...使用 ComponentOne Studio ASP.NET MVC 这款轻量级控件,效率大幅提高同时,还能满足用户所有需求。

4.3K100

Asp.Net MVC4入门指南(7):给电影表和模型添加新字段

本节,您将使用Entity Framework Code First来实现模型类上操作。从而使得这些操作和变更,可以应用到数据库。...此迁移类将创建新数据库,这也就是为什么之前步骤你要删除movie.mdf文件。 软件包管理器控制台窗口中,输入"add-migration Initial"命令来创建初始迁移。"...你现在看到此错误,因为应用程序,最新Movie模型类和现有的数据库Movie表Schema不同。(数据库表,没有Rating列。)...新电影,包括评级,将显示电影列表: ? 此外您也应该把Rating 字段添加到编辑、 详细信息和 SearchIndex 视图模板。...使用 ComponentOne Studio ASP.NET MVC 这款轻量级控件,可以助力你MVC开发过程。

2K100

Asp.Net MVC4入门指南(5):从控制器访问数据模型

本节,您将创建一个新MoviesController类,并在这个Controller类里编写代码来取得电影数据,并使用视图模板将数据展示浏览器里。...ASP.NET MVC 4 自动创建 CRUD (创建、 读取、 更新和删除) 操作方法,和相关视图文件(CRUD 自动创建操作方法和视图文件被称为基础结构文件)。...强类型模型和 @model 关键字 本系列之前教程,您看到了使用ViewBag对象,从控制器传递数据或对象给视图模板。ViewBag是一个动态对象,提供了方便后期绑定方法将信息传递给视图。...ASP.NET MVC 还提供了传递强类型数据或对象到视图模板能力。这种强类型使得更好在编译时检查您代码并在Visual Studio 编辑器中提供更加丰富智能感知。...并添加一个SearchIndex方法和SearchIndex视图,使您可以在数据库搜索电影了。从控制器访问数据模型是MVC数据传递重要知识部分,深入理解了这部分内容才能更好进行MVC开发。

4.2K50

ASP.Net MVC开发基础学习笔记:二、HtmlHelper与扩展方法

ASP.Net MVC微软并没有提供类似服务器端控件那种开发方式,毕竟微软MVC就是传统请求处理响应回归。所以抛弃之前那种事件响应模型,抛弃服务器端控件也理所当然。   ...") %>   那么,为什么可以页面调用Html.XXX方法呢?通过ILSpy反编译ViewPage页,我们可以看到原来ViewPage下有一个HtmlHelper类型属性-Html。...继续反编译查看,System.Web.Mvc命名空间下HtmlHelper类型如下图所示,经过MSDN大神讲解,HtmlHelper支持视图中呈现 HTML 控件。...gt;   这里主要是为了防止XSS攻击和恶意脚本,因此MVC,默认就实现了。...namespace System.Web.Mvc PS:为什么要改命名空间为System.Web.Mvc

68520

如何在 ASP.NET MVC 中集成 AngularJS(1)

AngularJS VS ASP.NET Razor 视图 几年来,一直使用完整 Microsoft ASP.NET MVC 平台来开发 Web 应用程序。...相比于使用传统 ASP.NET Web 窗体 postback 模型, ASP.NET MVC 平台使用是 Razor 视图。 这带来是:适当业务逻辑、数据和表示逻辑之间关注点分离。... Razor 视图 HTML 混合 .NET 代码看起来像套管代码。另外, ASP.NET MVC 模式下,一些业务逻辑是可以被最终写入 MVC 控制器。...因为想使用 ASP.NET 捆绑来加载所有的 AngularJS 控制器。一旦开始索引,一个 ASP.NET 捆绑巨大挑战将会出现在服务器端。...作为一个例子,一般 JavaScript ,错误输入变量名称会创建一个新全局变量严格模式下,这将抛出一个错误,因此无法意外创建一个全局变量

7.6K60
领券