Как правильно добавить дополнительный параметр к действию входа в учетную запись в удостоверении asp.net? - PullRequest
0 голосов
/ 09 марта 2019

Действие входа в систему:

// GET: /Account/Login
        [AllowAnonymous]
        public ActionResult Login(string returnUrl)
        {
            ViewBag.ReturnUrl = returnUrl;
            return View();
        }

У меня есть форма в моем представлении:

using (Html.BeginForm("RateRestaurant", "Restaurants", new { restaurantId = Model.Restaurant.Id }))
    {
        <div>
            @Html.LabelFor(m => m.NewRate)
            @Html.DropDownListFor(m => m.NewRate, new SelectList(Model.RatesForDropDownList))
            <button type="submit">Rate</button>
        </div>
    }

который вызывает RateRestaurant Действие:

[Authorize]    
public ActionResult RateRestaurant(int newRate, int restaurantId)
{
    var stringUserId = User.Identity.GetUserId();
    var userId = new Guid(stringUserId);
    var rate = new Rate() { Rating = newRate, UserId = userId, RestaurantId = restaurantId };

    _context.Ratings.Add(rate);
    _context.SaveChanges();

    return RedirectToAction("Details", "Restaurants", new { id = restaurantId });
}

Когда я вызываю RateRestaurant как не авторизованный пользователь, платформа вызывает Login Действие, которое принимает только параметр returnUrl. В конце процесса входа в систему он перенаправит меня на returnUrl, который в этом случае будет /Resaurants/RateRestaurant?restaurantId=7, но RateRestaurant нуждается во втором аргументе NewRate, но в этом случае он нулевой. Так есть ли хороший способ добавить дополнительный параметр, который бы содержал объекты типа NewRate, чтобы передать их вызываемому действию?

1 Ответ

0 голосов
/ 09 марта 2019

Вы можете изменить свою форму, чтобы использовать метод GET.Таким образом, ваш параметр newRate будет частью URL, поэтому вы также будете перенаправлены туда после входа в систему.

...