2

私は問題に直面しています、私はグーグルを持っています、そして私は解決する方法を見つけられませんでした。

私はこれらの2つのアクションを持っています

    public ActionResult ActionA(DTOA dtoA)
    {
       .....
    }

    [HttpPost]
    public ActionResult ActionB(DTOB dtoB)
    {
        DTOA dto = new DTOA();
        dto.ArraOfStringA = dtoB.ArraOfStringB;
        dto.Id = dtoB.Id;


        return RedirectToAction("ActionA", dto);
    }

モデル

public class DTOA
{
    public int Id{get;set;}
    public string[] ArraOfStringA { get; set; }

}

public class DTOB
{
    public int Id{get;set;}
    public string[] ArraOfStringB { get; set; }

}

だから状況は

ActionBに投稿すると、dtoBパラメーターの文字列の配列に2つのイテンが入力されます。「1」と「2」

ただし、このアクションがActionAにリダイレクトされると、dtoAパラメーターに1回の反復が入力されます。「System.String[]」。

ブラウザに「domain/controler / ActionA?ArraOfStringA = 1&ArraOfStringA=2」と入力すると

dtoAパラメーターには2つのitenが入力されます。「1」と「2」(予想される動作)

では、配列os文字列のプロパティを持つ複雑なモデルを渡すActionAにリダイレクトするにはどうすればよいですか?

4

1 に答える 1

5

TempDataモデルが複雑な場合は、ルートパラメータを使用するのではなく、2つのアクション間で転送するときにモデルの保存に使用することを検討してください。

public ActionResult ActionA()
{
   var dto = TempData["model"] as DTOA;

   ...
}

[HttpPost]
public ActionResult ActionB(DTOB dtoB)
{
    DTOA dto = new DTOA();
    dto.ArraOfStringA = dtoB.ArraOfStringB;
    dto.Id = dtoB.Id;

    TempData["model"] = dto;

    return RedirectToAction("ActionA");
}
于 2013-01-28T00:09:06.147 に答える