我有一些asp.net mvc方法,其中有很多常见的代码行。
因此,我尝试编写一种通用方法来消除代码重用,但是我没有收到结果。您能指出问题出在哪里吗?
//初始代码:
public ActionResult Details(int? id) {
if (id == null)
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
Product product = db.Products.Find(id);
if (product == null)
return HttpNotFound();
return View(product);
}
[HttpGet]
public ActionResult Edit(int? id) {
if (id == null)
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
Product product = db.Products.Find(id);
if (product == null)
return HttpNotFound();
return View(product);
}
[HttpGet]
public ActionResult Delete (int? id) {
if (id == null)
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
Product product = db.Products.Find(id);
if (product == null)
return HttpNotFound();
return View(product);
}
//最终代码:
public void Details(int? id) {
Common(id);
}
[HttpGet]
public void Edit(int? id) {
Common(id);
}
[HttpGet]
public void Delete (int? id) {
Common(id);
}
public ActionResult Common(int? Id) {
if (Id == null)
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
Product product = db.Products.Find(Id);
if (product == null)
return HttpNotFound();
return View(product);
}
输出黑屏
答案 0 :(得分:5)
您不小心或有意将呼叫者更改为返回void
。呼叫者的签名不应更改。他们仍应返回ActionResult
:
public ActionResult Details(int? id) {
return Common(id);
}
[HttpGet]
public ActionResult Edit(int? id) {
return Common(id);
}
[HttpGet]
public ActionResult Delete (int? id) {
return Common(id);
}