返回带有查询字符串的视图

时间:2018-07-20 08:09:13

标签: c# asp.net-mvc model-view-controller asp.net-core-2.0

您好,我在控制器中设置了一种方法,可以将一些数据保存到组中。

当用户尝试再次保存到该组时,它将返回错误并返回视图。但是,由于我使用的是查询字符串,因此我想返回视图并将查询字符串添加到URL。

        public async Task<IActionResult> Create([Bind("Id,GroupId,PayCompId,Client")] PayComponentGrouping payComponentGrouping)
    {
        string referer = Request.Headers["Referer"].ToString();

        var GroupId = payComponentGrouping.GroupId;
        var PayId = payComponentGrouping.PayCompId;
        var Db = payComponentGrouping.Client;

        if (ModelState.IsValid)
        {
            IList<PayComponentGrouping> items = _context.PayComponentGrouping
                .Where(o => o.GroupId == GroupId)
                .Where(o => o.PayCompId == PayId)
                .Where(o => o.Client == Db)
                .ToList();

            var GroupName = _context.payComponentGroups
                                .Where(o => o.GroupId == GroupId)
                                .Select(o => o.GroupName)
                                .FirstOrDefault();

            if (items.Count == 0)
            {
                _context.Add(payComponentGrouping);
                await _context.SaveChangesAsync();
                return RedirectToAction("Details", "DatabaseLists", new { id = Db });
            }

            ViewBag.Error = $"Already belongs to Group: {GroupName}";

        }

        return View();
    }

因此,在返回View()中,我想添加PayId和Db。我最初使用return Redirect(referer)将用户重定向到具有查询字符串的页面。由于是重定向,因此不会显示错误消息。

1 个答案:

答案 0 :(得分:3)

我知道了。

我将ViewBag更改为TempData,然后返回了重定向。

TempData["Error"] = $"Already belongs to Group: {GroupName}";

return Redirect(referer);

然后将错误消息添加到视图。