使用网址生成网址.操作助手和 JavaScript 变量的正确编码
Generating URL with URL.Action helper and proper encoding of javascript variables
我正在尝试在ASP中调用操作方法。MVC with AJAX 使用 Url.Action 助手生成的 URL。我有一些参数,它们是使用jQuery从DOM中提取的javascript变量。
我尝试了两种方法,但都失败了。
我只使用两个变量简化了示例。在现实世界中,有四个(十进制?,字符串,字符串,字符串)。
第一:
var link = '@Url.Action(MVC.ControllerName.ActionNames.Edit, MVC.ControllerName.Name)';
link = link + '?first=' + first + '&second=' + second;
在这种情况下,所有参数都传递给操作方法,但是当变量包含一些非标准字符(例如"é")时,它的格式不正确,我在恢复它的正确编码时遇到问题(例如"Simplifi s"而不是"Simplifiés")
第二:
var link = '@Url.Action(MVC.ControllerName.ActionNames.Edit, MVC.ControllerName.Name, new { first = "-1", second = "-2"})'
link = link.replace("-1", first);
link = link.replace("-2", second);
在此方案中,仅将第一个变量(可为 null 的小数)传递给操作方法。其余的是空字符串。
我注意到在第二种情况下,链接如下所示:
/控制器名称/编辑?第一个=890 &第二个=某物
(插入 890 和 ;秒之间的空格只是因为堆栈溢出的 HTML 渲染)
而在第一种情况下,它看起来如下:
/ControlerName/edit?first=890&second=Something
操作方法如下所示:
[HttpGet]
public virtual ActionResult Edit(decimal? first, string second)
{
//code
}
Ajax 调用如下所示:
$.ajax({
url: link,
type: 'get',
cache: false,
async: true,
success: function (result) {
$('#someId').html(result);
}
});
变量从 DOM 中选择,如下所示:
var first = $(this).closest('tr').find('.first').html();
@Url.Action
将为您的基本 url 进行必要的编码,但您必须自己处理 2 个 JavaScript 变量的 url 编码first
和second
。
一种简单的方法是使用 encodeURIComponent()
:
var link = '@Url.Action(MVC.ControllerName.ActionNames.Edit, MVC.ControllerName.Name)';
link = link
+ '?first=' + encodeURIComponent(first)
+ '&second=' + encodeURIComponent(second);
或者正如评论中@Nilesh提到的,您可以一次性使用encodeURI()
var link = '@Url.Action(MVC.ControllerName.ActionNames.Edit, MVC.ControllerName.Name)';
link = link + '?first=' + first + '&second=' + second;
linkToUse = encodeURI(link);
相关文章:
- 调用类向后变量 (JavaScript)
- 初始化父类中的变量(JavaScript/CoffeeScript 习语)
- 可以'找不到变量javascript错误
- 输出数组变量javascript
- 自提交表单访问变量javascript
- 将变量 javascript 添加到用于旋转图像的链接中
- 在文本字段中显示保存的本地存储变量 - javascript
- 将变量添加到变量 JavaScript 中
- 获取要在变量 JavaScript 中使用的用户输入值
- 如何在变量 Javascript 中删除双引号
- 使用变量 javascript 从 json 文件中获取数据
- 读取输入和打印变量 - JavaScript 和 HTML 4.01
- 传递 PHP 变量 JavaScript 窗口位置
- 重置变量 JavaScript
- 变量 JavaScript 中的变量
- 尝试使用多个函数时无法使用全局变量 - JavaScript - 初学者
- 如何按值将数组分配给另一个变量 JavaScript
- setTimout 搞砸了变量 JavaScript
- 用内部函数变量更改外部函数变量?Javascript
- 根据变量 JavaScript 增加