Действие входа в систему:
// 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
, чтобы передать их вызываемому действию?