2

箱から出してMVCを使用すると、生成されたURLが誤解を招く可能性があることがわかり、これを修正できるかどうか、または私のアプローチ/理解が間違っているかどうかを知りたいと思いました。

フォームを含むCreateEggページがあり、フォームに入力して送信すると、ユーザーは新しいeggが含まれるListEggsページに移動するとします。

したがって、私のエッグコントローラーは次のようになります。

public class EggController : Controller
{
    public void Add()
    {
        //do stuff

        RenderView("CreateEgg", viewData);
    }

    public void Create()
    {
        //do stuff

        RenderView("ListEggs", viewData);
    }
}

したがって、私の最初のページにはhttp:// localhost / egg / addのようなURLがあり、ページのフォームには次のアクションがあります。

using (Html.Form<EggController>(c => c.Create())

2番目のページのURLがhttp:// localhost / Egg / Createになることを意味します。これは誤解を招く可能性があります。卵を作成しているため、アクションはCreateと呼ばれる必要がありますが、リストビューが表示されているため、httpのURLが表示されます。 :// localhost / Egg / Listは、より多くのシーンを作成します。ビューやアクションの名前を誤解させることなく、これを実現するにはどうすればよいですか?

4

3 に答える 3

4

問題は、あなたの行動が単一責任の原則に違反するという2つのことを行うことです。

アイテムの作成が完了したときに作成アクションがリストアクションにリダイレクトされる場合、この問題は解消されます。

于 2008-09-01T21:19:48.030 に答える
0

Scott Guの投稿で概説されているActionVerbsは、良いアプローチのようです。

スコットは言う:

アクションメソッドのオーバーロードされた実装を作成し、新しい[AcceptVerbs]属性を使用して、ASP.NETMVCにそれらのディスパッチ方法をフィルター処理させることができます。たとえば、以下では、2つのCreateアクションメソッドを宣言できます。1つはGETシナリオで呼び出され、もう1つはPOSTシナリオで呼び出されます。

[AcceptVerbs("GET")]
public object Create() {}
[AcceptVerbs("POST")]
public object Create(string productName, Decimal unitPrice) {}
于 2008-09-04T10:29:28.130 に答える
0

メソッドがアクションになる方法by Phil Haack

于 2008-09-05T02:08:54.597 に答える