编辑表单并单击保存按钮后,HttpGet方法在HttpPost方法之前执行。该页面正在使用URL中的查询字符串重新加载,旧数据仍填充字段,但数据已保存在服务器端。如果我删除查询字符串并重新加载页面,则会显示新数据。页面提交后GET方法在POST方法之前执行?
我的期望是只有HttpPost方法会被调用,更改将被保存保存,然后页面将被加载与保存的更改。使用Microsoft.AspNetCore.Mvc": "1.0.0
包。
这里是我HttpGet
和HttpPost
方法:
[HttpGet]
[Route("~/Home/Activity/{activityId}")]
public IActionResult Activity(int activityId)
{
ViewData["Title"] = "Activity Detail";
FundraiserDBContext context = new FundraiserDBContext(_ServerName, EnvironmentCode);
Engagement activity;
if (activityId == -1)
{
activity = new Engagement();
context.Engagement.Add(activity);
}
else
{
activity = context.Engagement.FirstOrDefault(a => a.Id == activityId);
}
if (activity != null)
{
ActivityViewModel vmActivity = new ActivityViewModel(activity, context);
return View("Activity", vmActivity);
}
else
{
ActivityViewModel vmActivity = new ActivityViewModel(context);
return View("Activity", vmActivity);
}
}
[HttpPost]
[ValidateAntiForgeryToken]
//[Route("~/Home/Activity/{activityId}")]
public IActionResult Activity(ActivityViewModel vmActivity)
{
FundraiserDBContext db = new FundraiserDBContext(_ServerName, EnvironmentCode);
if (ModelState.IsValid)
{
db.Engagement.Update(vmActivity.ToEngagement(db));
db.SaveChanges();
}
return View("Activity", vmActivity); //this was vm.EngagementId
}
这里是保存按钮的代码:
<button type="submit" class="btn-success pull-right" style="width:80px;" onclick="location.href='@Url.Action("Activity", "Home", @Model)'">Save</button>
你在哪里调用POST方法,'onclick'要调用GET请求 –
就是这样。我根本不需要onclick。谢谢 – CoreyD