簡體   English   中英

如何將帶有變音符號/特殊字符的 viewModel 字符串值傳遞給控制器​​動作

[英]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(/&#220;/g, '\334')//Ü (Uppercase u with umlaut)
            .replace(/&#214;/g, '\326')//Ö (Uppercase o with umlaut)
            .replace(/&#196;/g, '\304')//Ä (Uppercase a with umlaut)
            .replace(/&#252;/g, '\374')//ü (Lowercase u with umlaut)
            .replace(/&#246;/g, '\366')//ö (Lowercase o with umlaut)
            .replace(/&#228;/g, '\344');//ä (Lowercase a with umlaut)
    
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM