如何解决如何将带有变音符/特殊字符的viewModel字符串值传递给控制器操作
我将viewmodel字符串值存储到JS变量中,以用于控制器动作,例如:
var info = '@Model.CompanyInfo';
window.location.href = "@Url.Action("ControllerAction","Controller")/?id=" + mId + &info=" + info;
控制器动作正常,但是当@Model.CompanyInfo
包含变音符/特殊字符时,这些字符将被转换(例如,将ö转换为ö
)。然后,控制器操作将无法接收var info
中包含的整个字符串。似乎所有内容都丢失在第一个特殊字符/变音符的位置之后。
我曾尝试对字符串进行编码/解码,但无法使其正常工作。
如何将整个字符串传递给控制器?
解决方法
Html.Raw
将保留给定字符,而encodeURIComponent
会将其正确传递给控制器
@{
var umlaut = "ö";
}
<script>
var umlautStr = '@Html.Raw(umlaut)';
console.log(umlautStr);
window.location = '/home/index?q=' + encodeURIComponent(umlautStr);
</script>
如果由于某种原因您不喜欢Html.Raw
方法,则可以使用自定义函数来处理德语字符。
function replacer(message) {
return message
.replace(/Ü/g,'\334')//Ü (Uppercase u with umlaut)
.replace(/Ö/g,'\326')//Ö (Uppercase o with umlaut)
.replace(/Ä/g,'\304')//Ä (Uppercase a with umlaut)
.replace(/ü/g,'\374')//ü (Lowercase u with umlaut)
.replace(/ö/g,'\366')//ö (Lowercase o with umlaut)
.replace(/ä/g,'\344');//ä (Lowercase a with umlaut)
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。