2014-09-29 2 views
1

Я хочу перенаправить на конкретную страницу. Для этого я использую некоторые функции Javascript в проекте MVC, как ::Использовать URL-адрес на основе метода бритвы

function rootUrl(url) {              
    var _rootUrl = '@Url.Content("~")'; 
    var x = url; 
    if (url.indexOf(_rootUrl) != 0) { 
     x = _rootUrl + "/" + url; 
     x = x.replace(/\/\//g, "/").replace(/\/\//g, "/"); 
    } 
    return x; 
}; 

, который используется в качестве ::

var url = rootUrl("Home/Company/") + $(this).val(); 
window.location.href = url; 

Но я получаю неправильный URL в браузере, как ::

http://localhost:60294/Home/Company/@Url.Content(%22~%22)/Home/Company/7 

ответ

1

Почему бы не использовать Url.Action() непосредственно, который дает вам URL-адрес относительно корневого каталога, вместо того чтобы создавать Javascript неаккуратно функция:

var url = '@Url.Action("Company","Home")' + $(this).val(); 

Здесь Главная это имя контроллера и компании это действие из него

1

Вы не можете получить доступ к бритве в файле Js. Когда мне нужно URLs от Razor в Js я просто определить их в view, как:

<script> 
    var _rootUrl = '@Url.Content("~")'; 
</script> 

Это будет работать

+1

где OP упомянул, что он в файле js? –

+0

Я надеюсь, что это определено в js-файле, потому что определение целой функции в представлении html не является хорошим кодированием. В противном случае бритва не сработала, иначе результат никогда не был бы таким, как "http: // localhost: 60294/Home/Company/@Url.Content (% 22 ~% 22)/Главная/Компания/7" – Balder

Смежные вопросы