[英]How to pass viewModel string value with umlauts/special characters to controller action
我將一個 ViewModel 字符串值存儲到一個 JS 變量中,以便在控制器操作中使用,例如:
var info = '@Model.CompanyInfo';
window.location.href = "@Url.Action("ControllerAction", "Controller")/?id=" + mId + &info=" + info;
控制器操作工作正常,但是當@Model.CompanyInfo
包含變@Model.CompanyInfo
符號/特殊字符時,這些字符將被轉換(ig ö 被轉換為ö
)。 然后控制器操作不會收到包含在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)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.