【问题标题】: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" />

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

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

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

【问题讨论】:

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

标签: c# knockout.js


【解决方案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" />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-29
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 2017-02-21
    相关资源
    最近更新 更多