asp.net mvc - ActionLink 的渲染不一致

2024-04-15

我有一个控制器,它接受以下两种格式的 URL:

  • 网络/添加或编辑-> 在页面上呈现空白表单以添加新的网络对象
  • 网络/AddOrEdit/[id]-> 使用预填充表单呈现页面以编辑网络对象 带有 ID [id]

显然,每个实例中都使用相同的视图 - 我的设计目标之一是使用相同的视图来添加和编辑目的。

母版页包含一个指向添加页面的链接,如下所示:

@Html.ActionLink("Add", "AddOrEdit", "Network")

通常这会正确呈现为/Network/AddOrEdit.

但是,当我在编辑页面时(即当前 URL 的格式为Network/AddOrEdit/[id]),然后“添加”链接将在末尾显示该 ID - 因此“添加”链接实际上指向编辑页面。这不是我想要的!

因此,出于某种原因,MVC 似乎允许查询字符串中的当前 ID 干扰 ActionLink 的呈现。

有什么建议我可以对此做些什么吗? :(


你的猜测是对的。 MVC路由机制可以重用当前请求中的路由变量来生成传出路由数据。这就是为什么id参数由当前请求填充。您应该明确指定id生成链接时

@Html.ActionLink("Add", "AddOrEdit", "Network", new { id = String.Empty }, null)

当路由系统看到带有可选的路由时id参数和路由值string.Empty,它生成链接而无需id到底

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

asp.net mvc - ActionLink 的渲染不一致 的相关文章

  • 如何使用 Error.cshtml 视图中的过滤器放入 ViewBag 的数据?

    我有一个操作过滤器 负责将一些通用信息放入 ViewBag 中 供共享 Layout cshtml 文件中的所有视图使用 public class ProductInfoFilterAttribute ActionFilterAttribu
  • 在 MVC 应用程序中使用 DataTables.NET ajax 调用访问 WebAPI 2 json

    我一直在尝试让 DataTables NET 与我构建的 WebAPI RESTFul 服务很好地配合 但返回的 json 似乎不符合 DataTables 正在寻找的内容 我尝试了各种 服务器处理 示例以及我在互联网上找到的一些示例 例如
  • Azure 云服务在应用程序池回收后停止运行

    我部署了一个 Azure 云服务 WebRole WebAPI 只有一个实例 我注意到 如果我等待一些空闲时间 没有 HTTP 请求 那么稍后服务就会死掉 并且对它的每个请求都会导致以下响应 Message An error has occ
  • 复杂对象MVC3的JSON序列化

    我有一个问题 我似乎不知道如何序列化类型的对象 public class SchedulingCalendarMonth public List
  • Asp.Net MVC3 Razor - 子项目列表未从编辑器发回

    我正在尝试在 MVC3 中创建一个多级编辑器 我所说的多级是指我希望能够编辑三个层次结构级别的数据 父对象 父对象的子对象和子子对象的集合 我的模型大致如下 namespace MvcApplication1 Models public c
  • Log4net不会将日志写入日志文件

    我使用 Log4net 创建了一个简单的场景 但我的日志附加程序似乎不起作用 因为消息没有添加到日志文件中 我将以下内容添加到 web config 文件中
  • 如何将 Razor 视图转换为字符串?

    我想使用我的 Razor 视图作为某种发送电子邮件的模板 所以我想将我的模板 保存 在视图中 将其作为字符串读入控制器 进行一些必要的替换 然后发送它 我有有效的解决方案 我的模板作为 HTML 页面托管在某处 但我想将其放入我的应用程序中
  • ASP.NET MVC:如何可靠地获取当前请求的真实URL?

    现在我有一个 MVC 应用程序运行在http 127 0 0 1 8081 http 127 0 0 1 8081 它实际上在 Azure 计算模拟器中运行 浏览器位置栏清楚地显示端口号为 8081 然而 Request Url and R
  • 如何在 Html.ValidationSummary 中指定数据注释错误的顺序

    我使用以下命令在表单上显示错误 我的域对象继承自基类 我发现基类数据注释属性显示在列表底部 这违背了它们在我的表单中出现的顺序 有什么方法可以指定错误的显示顺序吗 Example public class ClassA Required p
  • ASP.NET 会话状态和多个工作进程

    我需要了解一些有关 ASP NET 会话状态的信息 因为它适用于 IIS 7 和 ASP net 3 5 如果应用程序配置为使用进程内会话状态 那么如果有多个工作进程 该应用程序是否可以正常工作 换句话说 工作进程是否共享会话状态 IIS
  • 如何处理 ASP.net MVC Ajax 加载页面上的 jQuery 事件?

    我有一个问题 我是 jQuery Mobile 领域的新手 对于 ASP Net MVC 部分我有点迷失 这是我的问题 在我的移动网站中 我想更改导航栏 我使用的更像是应用程序栏 按钮 而我位于编辑页面或主页等 因此 这些页面 编辑 显示
  • 单击关闭按钮后不显示 Google 一键登录 UI

    我正在尝试按照本指南使新的谷歌一键登录工作 https developers google com identity one tap web https developers google com identity one tap web
  • 我如何将整数列表添加到路由

    我正在尝试将 int 数组添加到我的 Url Action 中 如下所示 var routeData new RouteValueDictionary for int i 0 i lt Model GroupsId Length i rou
  • 使用自定义VirtualPathProvider加载嵌入资源部分视图

    我编写了自定义 VirtualFile 和 VirtualPathProvider 实现 它们成功获取了部分视图的嵌入式资源 但是 当我尝试渲染它们时 它会产生以下错误 The view at Succeed Web Succeed Web
  • 会话过期时将部分视图重定向到登录页面

    是否有一种简单的方法可以在会话过期后将整个页面 而不仅仅是部分视图 重定向到登录页面 我已尝试以下解决方案 但无法使其工作 Net MVC Partial View 会话过期时加载登录页面 https stackoverflow com q
  • MVC3 中的“方法‘LabelFor’没有重载需要 2 个参数”

    我正在运行 ASP NET MVC 3 并且正在查看模型的编辑视图 我有一个FullName我想呈现为 全名 的属性 这是有问题的行 div class display label div 现在智能感知shows存在重载 有两个签名 第一个
  • 临时数据持久化

    我一直在与TempData最近面临一个令人困惑的案例 假设TempData在以下操作中创建 public ActionResult MyAction1 myTempData TempData myTempData 预计将在以下 Action
  • NHibernate - 无法延迟初始化角色集合

    我有以下看似简单的场景 但我对 NHibernate 仍然很陌生 当尝试在我的控制器上加载以下模型以进行编辑操作时 控制器的编辑操作 public ActionResult Edit Guid id return View reposito
  • asp.net mvc 文件流结果

    问题的第一部分 我在数据库中有信息 我想从数据库获取它并将其另存为 txt文件给客户端 我已经用常规的 asp net 完成了它 但在mvc中还没有 我的信息不是图像 这些关于人民的信息 我看着这个网站 http www mikesdotn
  • 验证属性被触发两次

    在我的 MVC3 应用程序中 我有模型 未删除重要属性 public class AccountViewModel StringLength 65 public string Property1 get set StringLength 6

随机推荐