首页
学习
活动
专区
工具
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的值存储在隐藏字段中,并在每次请求时传递给服务器。

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

相关·内容

  • Magicodes.WeiChat——ASP.NET Scaffolding生成增删改查、分页、搜索、删除确认、批量操作、批量删除等业务代码

    关于T4代码生成这块,我之前写过几篇帖子,如:《Magicodes.NET框架之路——让代码再飞一会(ASP.NET Scaffolding)》(http://www.cnblogs.com/codelove/p/4251533.html)、《Magicodes.NET框架之路——让Magicodes.NET帮你编写代码》(http://www.cnblogs.com/codelove/p/4232659.html)。ASP.NET Scaffolding虽然有些不足,但是思虑再三,考虑到时间成本,Magicodes.WeiChat中还是采用了ASP.NET Scaffolding模板来生成业务代码。目前已经实现了创建、删除、查看、编辑、分页、搜索、删除确认、批量操作、批量删除、支持日期控件、支持多个主键等情形的代码生成。

    02
    领券