【发布时间】:2010-11-24 04:33:03
【问题描述】:
我正在尝试编写我的 Asp.net MVC Web 应用程序的 javascript 重要部分(网站的这一部分是使用 Extjs 的 RIA)。但是,我在处理 javascript 中的 URL 的正确方法上陷入停顿。
例如,现在我有一个对位于Reading 区域中的ObjectsController 中的List 操作的Ajax 调用。 List 操作采用documentId (int) 参数。截至目前,这映射到/Reading/Objects/List,因为我还没有更改路由(该站点目前还太年轻,无法最终确定路由)。通常在视图中,要将这个 URL 放在一个字符串中,我会使用@Html.Action("List", "Objects", new { area = "Reading", documentId = 3)。
但是,这在处理 javascript 时不起作用,因为 javascript 不被视图引擎解析。
为了解决这个问题,我有一个非常小的视图,它返回在我的主应用程序的 js 文件之前加载的 javascript 常量,例如 URL。问题是我不能为此操作调用Html.Action,因为在恒定创建时间我(显然)不知道ajax调用将是什么documentId,如果你从Html.Action调用中排除documentId发生异常。 documentId 可能会在应用程序的正常工作流程中发生变化。
我该如何处理?我不想将 URL 硬编码为 /Reading/Objects/List,因为如果我为此更改路由(以获得更用户友好的 json API),或者此 Web 应用程序未托管在域的根目录上,则 URL 将不会不再有效。
其他人如何在他们的 javascript 调用中处理 MVC URL?
【问题讨论】:
-
看看这个问题的答案stackoverflow.com/questions/376644/…。我想这就是你需要的。
-
List操作方法是否也返回可用于进一步 ajax 调用的documentId? -
我不确定该链接有什么帮助,因为在代码生成 URL 时它没有参数信息,因此我会遇到同样的问题,除非
Url.RouteUrl()可以在没有一个参数(当我回家时值得一试)。List操作返回 JSON,其中包含与特定documentId相关的对象的 ID 和名称。
标签: javascript asp.net-mvc ajax