方法调用方法

时间:2019-07-21 08:53:15

标签: c# asp.net-mvc oop

我有一些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);
        }

输出黑屏

1 个答案:

答案 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);
}
相关问题