0

私はこの投稿方法を持っています:

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Invitations(SuperInvitationsEditModel model)
    {
        ...

        var newmodel = new SuperInvitationsEditModel();

        if (hasErrors)
        {
            SuperInvitationsErrorModel newErrorModel = new SuperInvitationsErrorModel();
            newErrorModel.Errors = model.Errors;
            return View(newErrorModel);
        }

        return View(newmodel);
        }

if(hasErrors) のこのコードが実行されると、このエラーが発生します。

The model item passed into the dictionary is of type 'MyProject.Models.SuperInvitationsErrorModel', but this dictionary requires a model item of type 'MyProject.Models.SuperInvitationsEditModel'.

メソッドの戻り値はジェネリックな ActionResult であるため、これができると思いました。なぜこれが機能しないのか誰にも教えてもらえますか?

4

2 に答える 2

3

現在のビューは強く型付けされているためです。コードを次のように変更します

 return View("yourviewname",newErrorModel);
于 2012-06-11T11:55:09.070 に答える
2

ViewResultActionResultにキャストすることとは関係ありません。問題は、型のモデルを期待する厳密に型指定されたビューがある( Invitations.cshtmlの上部をSuperInvitationsEditModel参照) が、型のモデルをそれに渡していることです。@modelSuperInvitationsErrorModel

2 つのビュー モデル クラス ( SuperInvitationsEditModelSuperInvitationsErrorModel ) を 1 つにマージするか、それぞれにスタンドアロン ビューを作成する必要があります。

于 2012-06-11T11:54:03.390 に答える