对象作为字符串传递给action

时间:2011-09-27 09:45:29

标签: asp.net-mvc asp.net-mvc-3

我有一个隐藏字段的表单,它存储object。这个对象是一个RoutesValues(我想存储一个引用,因为当我处理表单时我想重定向到一个路由)。处理表单的操作是:

public ActionResult Añadir(string userName, string codigoArticulo, string resultAction, string resultController, object resultRouteValues, int cantidad)
{
    processForm(codigoArticulo, cantidad);
    if (!ModelState.IsValid)
        TempData["Error"] = @ErrorStrings.CantidadMayorQue0;
    if (!string.IsNullOrWhiteSpace(resultAction) && !string.IsNullOrWhiteSpace(resultController))
        return RedirectToAction(resultAction, resultController, resultRouteValues);
    return RedirectToAction("Index", "Busqueda", new {Area = ""});
}

我的表格是:

@using (Html.BeginForm("Añadir", "Carrito", FormMethod.Get, new { @class = "afegidorCarrito" }))
{
    <fieldset>
        <input type="hidden" name="codigoArticulo" value="@Model.CodiArticle" />
        <input type="hidden" name="resultController" value="@Model.Controller" />
        <input type="hidden" name="resultAction" value="@Model.Action" />
        <input type="hidden" name="resultRouteValues" value="@Model.RouteValues" />
        <input type="text" name="cantidad" value="1" class="anadirCantidad" />
        <input type="submit" />
    </fieldset>
}

我遇到的问题是resultRouteValues作为字符串而不是对象传递。有什么方法可以解决这个问题吗?

感谢。

1 个答案:

答案 0 :(得分:1)

不,如果RouteValues是一个复杂的对象,就没有简单的方法。您必须将对象序列化为一些文本表示到此隐藏字段中,然后在控制器操作中将其反序列化。你可以看看MvcContrib的Html.Serialize帮手。

相关问题