2016-11-02 1 views
0

У меня есть контроллер ASP .NET MVC, которые получают два десятичных параметра:Передача двух десятичных значений в ASP .NET MVC контроллер

[HttpGet, Route("stores/{latitude}/{longitude}")] 
public void GetStores(decimal latitude, decimal longitude) 
{ 
    ... 
} 

Этот контроллер не работает (ошибка 404), когда я вызываю этот адрес:

http://localhost:16959/store/stores/40.5479397/-3.6116505

... Но если я изменить мой контроллер, и добавить «/» в строке маршрута, я могу ссылаться на этот адрес правильно (Почтальон):

[HttpGet, Route("stores/{latitude}/{longitude}/")] 
public void GetStores(decimal latitude, decimal longitude) 
{ 
    ... 
} 

http://localhost:16959/store/stores/40.5479397/-3.6116505/

проблема сейчас, Кураж не признают эту косую черту «/» и не нашел контроллер.

Мой вопрос ... Каков наилучший способ решить эту проблему? Пропускать значения в запросе тела? Добавить косую черту во втором параметре?

+0

Точка (.) В десятичной системе делает фреймворк думать, что это расширение файла для файла, который он может найти. поэтому 404 не найдена ошибка – Nkosi

+0

спасибо !! @Nkosi –

+2

Возможный дубликат [Как передать десятичное значение методу действия] (http://stackoverflow.com/questions/20799263/how-to-pass-decimal-value-to-action-method) – Nkosi

ответ

0

Вы не должны использовать маршрут ("магазины/{широта}/{долгота} /") или изменить шаблон URL.
Просто используйте <input> с именем, а затем представить в виде строки URL запроса

<input Name="Latt" Type="Text" placeholder="Lattitude"> 
<input Name="Lang" Type="Text" placeholder="LAngitude"> 
<input Type="Submit" > 

использовать приведенный выше код в начинают образуют

Если есть какие-либо проблемы в использовании контроллер ввода спецификации как ниже

Public ActionResult Login (String Latt,String Long) 
{ 
    decimal latt = (decimal)Latt; 
    decimal long = (decimal)Long; 
    (put your code here) 

    }