gpt4 book ai didi

javascript - 无法从@Url.Action 访问变量

转载 作者:行者123 更新时间:2023-11-30 08:51:41 27 4
gpt4 key购买 nike

我在 ASP.Net MVC 页面中有这个 Javascript

onComplete: function (id, fileName, responseJSON) {
if (responseJSON.success) {
$('#divImgs ul').append(
$('<li>').append(
$('<a>').attr('href',
'@Url.Action("DeleteFile", "Upload", new { id = fileName})').append(
$('<img>').attr('src', responseJSON.filePath))
));
}
}

这会产生编译错误

The name 'fileName' does not exist in the current context

为什么我不能访问 @Url.Action 中的 fileName 变量?

最佳答案

此问题是@Url.Action 在服务器端被解析,而文件名是客户端的 javascript 变量。你最好的选择是这样的:

onComplete: function (id, fileName, responseJSON) {
if (responseJSON.success) {
$('#divImgs ul').append(
$('<li>').append(
$('<a>').attr('href', '@Url.Action("DeleteFile", "Upload", new { id = "' + filename + '" })').append(
$('<img>').attr('src', responseJSON.filePath))
));
}
}

可能有更好的方法将文件名附加到 url,但这里的想法是从服务器呈现基本 url,然后根据需要使用 javascript 修改它。

编辑:我同意 haim77。您需要在服务器端呈现路由,而不是仅仅在客户端附加,以防路由格式发生变化。但是在这种情况下,我们需要注入(inject)一些javascript。因此,只需将变量注入(inject)路由,使其解析为正确的格式,同时输出与 javascript 兼容的代码。

关于javascript - 无法从@Url.Action 访问变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17408608/

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