Мне не повезло передать несколько значений перенаправленной странице Razor - PullRequest
0 голосов
/ 05 июня 2019

Я не могу передать новую модель, которую я делаю OnPost.Поэтому я пытаюсь просто передать значения маршрута.

Я могу вернуть RedirectToPage ("ValidateCommand"), но созданная мной модель не проходит:

 var paypal = new PayPalModel();

paypal.cmd = "_xclick";
paypal.item_number = "xyz";
paypal.item_name = "Course Name Here";
paypal.amount = "1";
paypal.currency_code = "USD";
paypal.no_shipping = 1;

paypal.actionURL = "https://www.paypal.com/cgi-bin/webscr";
paypal.business = "xxx@xxx.com";
paypal.cancel_return = "http://localhost:xxx/Misc/cancel";
paypal.@return = "http://localhost:xxx/Misc/thankyou";
paypal.notify_url = "http://localhost:xxx/Misc/done";

Так что я думалЯ передал бы все вышеупомянутые значения как директивы @page (не уверен, что это то, что он называется).

return RedirectToPage("ValidateCommand", new {cmd = "_xclick", item_number = "xyz", item_name = "Course Name Here", amount = "1", currency_code="USD", no_shipping=1, actionURL = "https://www.paypal.com/cgi-bin/webscr", business = "testJohn@SurfJohn.com", cancel_return = "http://localhost:50061/Misc/cancel", @return = "http://localhost:50061/Misc/thankyou", notify_url = "http://localhost:50061/Misc/done" });

И в моем "ValidateCommand.cshtml" я получил это, я взял пример Model из приложения MVCУ меня это работает.

@ page "{cmd} / {item_number} / {amount} / {currency_code} / {no_shipping} / {acitonURL} / {business} / {cancel_return} / {@ return}/ {notify_url} "

@ model OESAC.Models.PayPalModel

<form id="hiddenform" action=@RouteData.Values["actionURL"]>
   @Html.HiddenFor(model => model.cmd)
        @Html.HiddenFor(model => model.business)
        @Html.HiddenFor(model => model.no_shipping)
        @Html.HiddenFor(model => model.@return)
        @Html.HiddenFor(model => model.cancel_return)
        @Html.HiddenFor(model => model.notify_url)
        @Html.HiddenFor(model => model.currency_code)
        @Html.HiddenFor(model => model.item_name)
        @Html.HiddenFor(model => model.amount)
        @Html.HiddenFor(model => model.item_number)

    <input hidden value="@RouteData.Values["cmd"])" />
    <input hidden value="@RouteData.Values["business"])" />
    <input hidden value="@RouteData.Values["no_shipping"])" />

</form>

PayPalModel осталась от моего приложения MVC.Но в моих страницах Razor его не существует.Я надеялся, что смогу заменить model => model.item_number своей новой моделью или значениями маршрута или строки запроса.Что-нибудь.Эти значения отправляются в PayPal, чтобы пользователь мог произвести оплату.Это работает для приложения MVC, которое у меня есть, а также для приложения веб-форм vb.net.

Это ошибка, которую я получаю: «InvalidOperationException: ни одна страница с именем« ValidateCommand »не соответствует предоставленным значениям».

1 Ответ

1 голос
/ 06 июня 2019

Дважды проверьте передаваемые значения параметров, которые вы передаете, с именами заполнителей в шаблоне маршрута.Я вижу по крайней мере один (item_name) отсутствующий в шаблоне маршрута, и один, где орфография не соответствует (actionUrl).Кроме того, вам не нужно ставить префикс return со знаком @ в шаблоне маршрута.Вам нужно сделать это только в коде C #.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...