Ait*_*iow 3 c# asp.net-mvc asp.net-mvc-3
我遇到了一个问题,我有google却找不到解决方法。
我有这两个动作
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);
}
Run Code Online (Sandbox Code Playgroud)
模型
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; }
}
Run Code Online (Sandbox Code Playgroud)
所以情况是
当我发布到ActionB时,dtoB参数的字符串数组填充有2个itens。“ 1”和“ 2”
但是当此操作重定向到ActionA时,dtoA参数将填充1个itens。“ System.String []”。
如果我在浏览器中输入“ domain / controler / ActionA?ArraOfStringA = 1&ArraOfStringA = 2”
dtoA参数填充了两个iten。“ 1”和“ 2”(预期行为)
那么,如何通过具有数组os字符串属性的复杂模型重定向到ActionA?
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");
}
Run Code Online (Sandbox Code Playgroud)