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 个itens。“系统。字符串 []”。

如果我在浏览器中输入“domain/controler/ActionA?ArraOfStringA=1&ArraOfStringA=2”

dtoA 参数填充了两个项。“1”和“2”(预期行为)

那么,如何重定向到 ActionA 传递具有数组 os 字符串属性的复杂模型?

4

1 回答 1

5

如果模型很复杂,您可能需要考虑TempData在两个操作之间传输时使用来存储模型,而不是使用路由参数。

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 回答