在asp.net身份中向Account Controller中的Login操作添加附加参数的正确方法是什么?

问题描述 投票:0回答:1

登录操作:

// 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 Action。在登录过程结束时,它将重定向到returnUrl,在这种情况下将是/Resaurants/RateRestaurant?restaurantId=7但RateRestaurant需要第二个参数NewRate但在这种情况下它是null。那么有没有一种方法可以添加额外的参数来保存像NewRate这样的对象来将它们传递给被调用的动作?

c# asp.net-mvc login asp.net-identity
1个回答
0
投票

您可以更改表单以使用GET方法。这样,你的newRate参数将成为url的一部分,因此登录后你也会被重定向到那里。

© www.soinside.com 2019 - 2024. All rights reserved.