我有一个带有Index动作的Product控制器,它基本上为ProductController创建post和Index(Post动作动词)动作的视图表单,它基本上将产品保存到db但是当发生验证错误时,我返回一个View(mymodel)else保存时,我返回RedirectToAction("Created,"Product"),但由于一些奇怪的原因,当我进入代码时,它会两次而不是一次触及Product Controller动作.因此产品有2条记录而不是一条记录.
public ActionResult Index()
{
return View()
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(FormCollection fc)
{
// 2 calls are made to this controller
try
{
// save the product
return RedirectToAction("Created");
}
catch(Exception ex)
{
// recreate the model from form collection
return View(viewData); // when a validation error occurs it comes into the catch block
}
}
Run Code Online (Sandbox Code Playgroud)
Len*_*rri 14
这是一个基本清单(从这里复制):
检查视图中是否有任何图像或其他元素具有空src属性(<img src=”" />例如)或具有src
引用不再存在的属性的属性.您最好直接在浏览器的"页面源"中查看,而不是在View中查看,因为在呈现视图时可能会出现一些"动态"问题.一旦在页面HTML源中找到这样的空元素,通常很容易在View中找到相同的元素并修复问题.这也可能发生<link href="">.
检查您是否有任何AJAX引用为空的调用URL(浏览器会将此类空白解释URL为当前页面,并将再次请求当前页面使该Controller操作执行几次).
您忘记“false”从JavaScript点击事件处理程序返回进行AJAX呼叫的链接或按钮.如果您忘了“return false”,浏览器只需解释链接的默认操作 - 常规,非AJAX,再次调用同一页面)
有时Firebug和YSlow [Firefox(FF)插件]会导致此类问题.只需在FF中暂时禁用它们或使用其他浏览器进行测试.
注意装饰控制器或操作的重复过滤器.(这是我的问题)
这种情况的另一种解决方案..
我遇到了完全相同的问题,从Chrome运行和测试。我无法调试它,因为第二个调用来自(外部调用)。我在Firefox和Internet Explorer中随机测试了它,没有双重命中。
无论是什么讨厌的事情,我都删除了 Chrome 缓存(一切!!!),问题已经解决。
希望它会帮助你们中的一些人:)
| 归档时间: |
|
| 查看次数: |
9989 次 |
| 最近记录: |