在ASP.NET身份中的帐户控制器中的登录操作中添加附加参数的正确方法是什么?



登录操作:

// 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称为未登录的用户时,Framework调用Login操作,该操作仅采用returnUrl参数。在过程结束时,它将将我重定向到 returnUrl,在这种情况下为 /Resaurants/RateRestaurant?restaurantId=7,但是raterestaurant需要第二个参数 NewRate,但在这种情况下,它是无效的。因此,是否有一种添加其他参数的好方法,该参数可以容纳像NewRate这样的对象将它们传递给所谓的操作?

您可以更改表单以使用GET方法。这样,您的newRate参数将成为URL的一部分,因此您也将在登录后重定向。

相关内容

  • 没有找到相关文章