【发布时间】:2014-11-25 01:04:00
【问题描述】:
这是控制器:
[HttpPost]
public async Task<ActionResult> Index(EmailService em)
{
if (ModelState.IsValid)
{
await em.Send();
}
return View(em);
}
这里是 ViewModel 发送;其中“this”是 EmailService 类的一个实例。
public async Task<EmailService> Send()
{
msg = new MailMessage(From, To);
msg.Body = Body;
msg.Subject = Subject;
SetHost();
try
{
await Server.SendMailAsync(msg);
status = Status.Success;
Sent = DateTime.Now;
return this;
}
catch (Exception iox)
{
status = Status.Failed;
IOX = iox;
return this;
}
}
我在控制器中设置了一个断点,并看到状态更新正确,这意味着数据“正在通往视图的路上”:“em”确实有数据!关于此声明。
return View(em);
但是视图在发布之前保持相同的状态?注意到时间戳及其下方的字段了吗?
是时候调试数据包了,在 post 上按浏览器上的 F12 并在控制器入口处设置断点,因此它不会响应...这是入站数据:
To:somebody@email.com
From:somebody@email.com
Subject:This is a test
Body:This is only a test
Sent:1/1/0001 12:00:00 AM
status:Initialized
这是在控制器返回视图(em)上设置中断时的“em”值:
To:somebody@email.com
From:somebody@email.com
Subject:This is a test
Body:"This is only a test" string
Sent:{11/24/2014 6:48:49 PM}
status:Success
观看来自浏览器 F12 网络端的 200 响应显示了这个“旧”表单数据!
To:somebody@email.com
From:somebody@email.com
Subject:This is a test
Body:This is only a test
Sent:1/1/0001 12:00:00 AM
status:Initialized
任何帮助将不胜感激,看起来 MVC 在异步控制器方法返回后提取了错误的副本以返回!
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-4 c#-4.0 asynchronous viewmodel