gpt4 book ai didi

asp.net-mvc - 在 Url.action javascript 中给出动态操作名称

转载 作者:行者123 更新时间:2023-12-01 02:42:54 27 4
gpt4 key购买 nike

我想通过javascript在Url.action中给出动态 Action 名称。

// I want to change Index name by dynamic
$.ajax({
url: '@Url.Action("Index", "Home")',
type: "Post",
data: { Surveyid: surveyid, Category: catcode },
success: function (data) {
window.location.href = data.Url
}

喜欢

var x="xxxx";

@Url.Action(x,"Home") -> not working throws error

@Url.Action(x.toString(),"Home") -> not working

那我该怎么办?

最佳答案

Url.Action 是服务器生成的,而您似乎想更改浏览器上的操作。你可以做的是对Action进行标记,获取Url.Action来生成标记化的URL,然后在js中替换它:

var jsUrl = '@Url.Action("##", "Home")'; // ## is the token
$.ajax({
url: jsUrl.replace('##', someDynamicAction),
...

(您可能需要对 Controller 执行相同的操作)

编辑

我的良心战胜了我 - 这样做不是一个好主意,因为任何无效的操作名称(或者 ControllerAction 中的更改名称)只会在运行时被获取,例如出现 404 错误。

需要 ajax 的 Controller 和操作的数量应该是有限的,并且 T4MVC已经解决了此类问题。

您可以创建各种链接的 URL:

var urlToIndex = '@Url.Action(MyControllerAssembly.Index.Home())))';
var urlToOtherAction = ...
... etc for all actions needed in the 'switch' for ajax call.

然后为您的 ajax 调用选择适当的 URL。 (T4MVC 还具有方法 Url.JavaScriptReplacableUrlAjax.ActionLink,尽管场景略有不同)

关于asp.net-mvc - 在 Url.action javascript 中给出动态操作名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20884806/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com