猿问

方法调用方法

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

        }

输出时出现空白屏幕


人到中年有点甜
浏览 105回答 1
1回答

翻阅古今

您无意或有意地将调用者更改为 return void。呼叫者的签名不应更改。他们仍然应该返回ActionResults: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);}
随时随地看视频慕课网APP
我要回答