0

DRY ルールに違反するのは嫌いです。

URL の場合: /student/charles /Views/Student/Show.cshtml は Student Model でレンダリングされます。

どうすればasp.net mvcでそれを達成できますか?

(URLから関連モデルを取得できます)

解決したと思います。私はこのコードですべてのリクエストをキャッチしています:

  routes.MapRoute("CatchAll", "{*url}",
            new { controller = "Base", action = "Dispatch" }
        );

今、ディスパッチャーで CustomView を呼び出そうとしています。

出来上がり:

 public class BaseController : Controller
{

    public ActionResult Dispatch(string url)
    {
        object model = null;
        .....
        return View("~/Views/Student/Show.cshtml", model);

    }
}     

汚れているように見えますが、機能します:)私はより良い実装を開いています。

4

1 に答える 1

2

あなたが何を達成しようとしているのか正確にはわかりません。これを通常の MVC の方法で実装した場合、どのように DRY に違反するのかまずわかりません。

あなたはこのようなことをするでしょう。

モデル: Student.cs

public class Student {
  public string StudentId { get; set; }
  public string Name { get; set; }
}

コントローラー: StudentController.cs

public class StudentController : Controller {

  public ActionResult Student(string id) {
    // TODO: Get the student by ID and return the view displaying the student.
    return View(student);
  }
}

ビュー: Student.cshtml - Student モデル (またはビュー モデル) に対して厳密に型指定されたビューを作成します。

かなりシンプルで非常に簡単です。ルーティングをいじる必要はありません (キャッチオールに反対することはお勧めしません-それが何を買うのかさえわかりません)。もちろん、URL/Student/StudentName を取得したい場合は、ルーティングを少しいじる必要がありますが、それも簡単です。

繰り返しますが、ここでは基本的な MVC セットアップについて詳しく説明しています。何を DRY に保とうとしているのかわかりません。コードを繰り返している場所は見当たりません。おそらくあなたは明確にすることができますか?

于 2012-11-19T03:20:11.737 に答える