Javascript 从typescript调用中转义url中的特殊字符以到达mvc控制器

Javascript 从typescript调用中转义url中的特殊字符以到达mvc控制器,javascript,asp.net-mvc,typescript,url,escaping,Javascript,Asp.net Mvc,Typescript,Url,Escaping,我有一个asp.net mvc控制器: public class HomeController : Controller { GET("{name:alpha}")] public ActionResult Build(string name) { var model = new MyModel(name) return View("model); } } 以

我有一个asp.net mvc控制器:

    public class HomeController : Controller
    {
        GET("{name:alpha}")]
        public ActionResult Build(string name)
        {
            var model = new MyModel(name)
            return View("model);
        }
    }
以及下面的typescript代码,它接受用户输入并通过在末尾添加用户输入来调用上一个控制器:

    function callUserInput(userinput)
    {
        mycall(`./Website/Home/Build/${userinput}`)
    }
当用户提供的输入不包含特殊字符时,这种方法工作得很好,例如,如果他提供“myname”,则调用我的构建方法,但如果他提供 一个包含特殊字符(空白,-,u)的输入,比如“我的名字”、“我的名字”、“我的名字”,我的构建方法没有被调用,他得到一个404未找到

我试图像这样转义mycall参数:

    mycall(encodeURIComponent(`./Website/Home/Build/${userinput}`))
但是它没有改变什么,我得到了相同的错误

escape()
不会编码:@*/+

encodeURI()
将不编码:~@#$&*()=:/,;?+'

encodeURIComponent()
将不编码:~*()'

尝试
escape()或encodeURI()

如果它不起作用。然后试试看

encodeURIComponent( `./Website/Home/Build/${userinput} `).replace(/[!'()]/g, escape).replace(/\*/g, "%2A")