如何将字符串中的加号从视图传递给控制器​​?

Posted

技术标签:

【中文标题】如何将字符串中的加号从视图传递给控制器​​?【英文标题】:How to pass a plus sign in a string from a view to controller? 【发布时间】:2019-09-27 06:46:42 【问题描述】:

我在 MVC 视图中有一个表单,提交时会传回各种值。但是其中一个值可以是“70+” 问题是加号作为空格被传递回控制器,即“70”

这是视图上显示的输入元素:

<input type="hidden" value="70+" name="TestInput">

它是使用以下行中的 knockout.js 生成的:

<input type="hidden" data-bind="value:name" name="TestInput" />

当页面首次加载时,加号包含在模型中,但当提交表单时,加号不再是模型的一部分。

注意:输入的值是可变的,因此它可能根本不包含加号,但如果包含加号,我需要正确传递它。

如何确保将加号传递回控制器?

【问题讨论】:

你可以使用另一个符号并在之后替换它 可能相关(取决于您将值传输到控制器的方式):***.com/a/45561894/2590375 听起来你需要URLEncode 数据才能发送到服务器。 + 符号是查询字符串中的空格。 【参考方案1】:

正如@Steve 在 cmets 中提到的,需要对符号进行编码。

所以我使用encodeURIComponent 在koViewModel 中添加了一个新属性(encodedName):

self.name = ko.observable(data.name);
self.encodedName = ko.observable(encodeURIComponent(data.name));

然后只是在表单输入中使用它而不是名称:

<input type="hidden" data-bind="value:encodedName" name="TestInput" />

【讨论】:

以上是关于如何将字符串中的加号从视图传递给控制器​​?的主要内容,如果未能解决你的问题,请参考以下文章

如何将复杂的键值参数表单视图传递给mvc中的控制器?

如何将字符串从根视图控制器传递到另一个视图?

如何将值传递给另一个视图控制器?

如何将数据从一个视图传递到 IOS 中的另一个视图控制器?

如何将列表和字符串从一个控制器的两个操作传递到一个视图?如何在视图文件中单独获取这些数据?

如何将数据从先前的 segue 传递给子视图控制器?