登录操作:
// 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
之类的对象,以将其传递给被调用的操作?
答案 0 :(得分:0)
您可以更改表格以使用GET方法。这样,您的newRate
参数将成为url的一部分,因此您也将在登录后重定向到该地址。