我正在asp.net核心开发一个crud应用程序,在我使用RedirectToAction添加记录后添加ActionResult然后它不会重定向到该动作。
当请求是GET时它确实重定向,但是在POST的情况下它没有。
以下是我的代码:
public IActionResult Add(AuditSchedules model)
{
try
{
int ScheduleID;
int TotalDays;
DateTime start;
List<SelectListItem> li = new List<SelectListItem>();
TempData["state"] = util.Get_State();
TempData["branch"] = li;
TempData["Catg"] = ctx.CategoryMaster.Select(x => new SelectListItem { Text = x.CategoryName, Value = x.CategoryId.ToString() }).ToList();
int count = 0;
if (HttpContext.Request.Method == "POST")
{
using (var ctx = new QuestionnaireEntities())
{
count = ctx.AuditSchedules.Where(x => (x.State == model.State) &&
(x.Branch == model.Branch) &&
(x.StaffId == model.StaffId) &&
(x.FromDate == model.FromDate)).Count();
}
if (count <= 0)
{
TotalDays = (int)(model.ToDate.Subtract(model.FromDate)).TotalDays + 1;
start = model.FromDate;
model.CreatedBy = HttpContext.Session.GetString("UserName");
model.Icon = util.GetIcon(model.CategoryId);
model.CreatedDate = DateTime.Now;
model.IsCompleted = "N";
using (var ctx = new QuestionnaireEntities())
{
ctx.AuditSchedules.Add(model);
//ctx.SaveChanges();
ScheduleID = model.ScheduleId;
for (int i = 0; i < TotalDays; i++)
{
AuditSubSchedule subModel = new AuditSubSchedule();
subModel.ScheduleId = ScheduleID;
subModel.ScheduleDate = start;
ctx.AuditSubSchedule.Add(subModel);
//ctx.SaveChanges();
start.AddDays(1);
}
}
TempData["Msg"] = "Schedule For " + model.StaffName + " Created Successfully";
return RedirectToAction("Index", "Schedules");
}
else
{
TempData["Msg"] = "Schedule AllReady Exist , Try a Different Combination <br> [ Hint : Different State , Branch , StaffID , Fromdate]";
return RedirectToAction("Index", "Schedules");
}
}
}
catch (Exception ex)
{
logger.LogError(ex);
}
finally
{
}
return View(model);
}
添加记录后我使用返回RedirectToAction(&#34;索引&#34;,&#34;计划&#34;); 但它什么都没做。当请求是Get类型而不是它运行良好时,但是当我将模型发布到它而不是重定向时。
事实上它在MVC5中运行良好(无论是GET请求还是POST) 如何在ASP.Net Core中重定向?
发布网络标签响应后
更新两个
在网络日志中,添加的位置显示未找到,
答案 0 :(得分:3)
您对TempData
的使用,以及ASP.NET核心defaults使用CookieTempDataProvider
这一事实是您遇到问题的原因。
基本上,您正在尝试将大型对象序列化为cookie。生成的Cookie为too large - 结果为500(由于 因此, 您可能希望使用其他 MVC5不会发生此问题,因为它不使用return RedirectToAction("Index", "Schedules");
调用 执行正常,因此非常难以诊断 - 因为RedirectToAction
调用出现。 / p>
TempData
是一个红鲱鱼 - 它是无关的。对TempData["Catg"] = ctx.CategoryMaster.Select(x => new SelectListItem { Text = x.CategoryName, Value = x.CategoryId.ToString() }).ToList();
的多次分配是真正的原因 - 可能主要是这一个:ITempDataProvider
SessionStateTempDataProvider
实施(例如TempData
)。 或完全避免CookieTempDataProvider
。 apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-resource
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
rules:
- host: test.demo.com
http:
paths:
- path: /path1
backend:
serviceName: s1
servicePort: 8080
- path: /path2
backend:
serviceName: s1
servicePort: 8080
- path: /path3
backend:
serviceName: s2
servicePort: 80
- host: demo.test.com
http:
paths:
- backend:
serviceName: s2
servicePort: 80
。