Професионална програма
Loading...
dqvolla avatar dqvolla 19 Точки

ASP.NET Core MVC - Escaping slash issue

Здравейте колеги имам следния проблем: когато се опитам да използвам RedirectToAction ми ескейпва наклонената черта - например RedirectToAction(nameof(Details) + "/" + model.Username) и ми връщa "Details%2F" ?! В таг хелперите е същата работа но там поне може вместо asp-action да си сложим един "а href" и готово, при RedirectToAction как ще стане, някой ако може да помогне ? Търсих из нета но не намерих адекватни решения, а в документацията на майкрософт пише че трябва да се ескейпне с дабъл слаш или овъррайд на "DefaultODataPathHandler" - първия начин не работи а за втория си нямам идея как да стане :)

Тагове:
0
C# MVC Frameworks - ASP.NET
VasilValchanov avatar VasilValchanov 555 Точки

RedirectToAction(nameof(Details), new { username = model.Username })

Пробвай така да подадеш параметъра

0
dqvolla avatar dqvolla 19 Точки

Не става, така връща само "Details" без /{username} :)

0
msmilkoff avatar msmilkoff 338 Точки

А приемаш ли string username в Details action-а? Или името на праметъра е различно или model.Username е null.

1
dqvolla avatar dqvolla 19 Точки

"[Route("Users/Details/{username}")]
  public IActionResult Details(string username)"

При дебъг username не е null, просто при редиредт екшъна ми ескейпва наклонената черта ... :)

0
msmilkoff avatar msmilkoff 338 Точки

Дай кода

0
dqvolla avatar dqvolla 19 Точки

https://pastebin.com/pbewZDci

0
msmilkoff avatar msmilkoff 338 Точки

Със: return RedirectToAction(nameof(Details), new{ username = model.Email }) Няма как да не стане. Просто внимавай какво подаваш и после по какво взимаш юзъра  - по username или по email (ако има разлика).

0
dqvolla avatar dqvolla 19 Точки

Колегата Вълчанов беше предложил този вариант но връща само "/Users/Details" 

0
msmilkoff avatar msmilkoff 338 Точки

А провери ли дали всъщност е username = model.Email  или username = model.Username?
Просто няма логика да не работи

0
dqvolla avatar dqvolla 19 Точки

Добавил съм си username в модела така че не взема email  по default , знам че няма логика за това пиша тук, рових в гугъл, къде ли не но без успех

0
msmilkoff avatar msmilkoff 338 Точки

Хм, в момента нямам Core при мен да дебъгна, но ако искаш пробвай да махнеш route атрибута, то и без това по дифолт ще ти мапне същия route.
PS. не го прави това с "xxx" + "/" + "y", подавай си обекта в метода.

0
dqvolla avatar dqvolla 19 Точки

Ако не сложа атрибута Route.... въобще не ми го мачва, може би защото by deafult е id

0
VasilValchanov avatar VasilValchanov 555 Точки

[Route("Users/Details/{username?}")]

Пробвай с този route

1
dqvolla avatar dqvolla 19 Точки

И с този не тръгва :

0
VasilValchanov avatar VasilValchanov 555 Точки

А как редиректваш в този случай?

0
dqvolla avatar dqvolla 19 Точки

Намерих грешката, когато подавам тук "return RedirectToAction(nameof(Details), new { username = model.Username });" ,

модела на username винаги ми е null, може би защото не може да bindne от формата понеже имам полета само за имейл, телефон и пароли и само тях ми дава от модела, но когато го променя на "return RedirectToAction(nameof(Details), new { username = user.UserName });"

директно от user manager GetUserAsync си го взима username и така се оправи ....... Благодаря момчета за насоките :)

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.