【问题标题】:How to pass viewData back to the controller from partial view?如何将 viewData 从局部视图传递回控制器?
【发布时间】:2014-11-09 04:00:25
【问题描述】:

我有一个使用几个部分视图的主视图。 这些部分中的每一个都使用不同的模型并具有后期操作。 我的问题是我需要我的主视图模型中的一个属性用于我的局部视图之一。

我需要传递此属性视图的部分视图是该过程的最后阶段。 应用程序到达一个包含 switch 语句的局部视图,根据正在查询的项目的状态,决定将呈现哪个局部视图。

我的属性传递了那么远,甚至将它包含在部分的渲染操作中,但我不知道如何在控制器 PartialViewResult 中检索它。

在主视图中:

@{Html.RenderPartial("StatusForm", Model.HeadingDataModel.Status, new ViewDataDictionary { { "PurchaseOrderNumber", Model.AccordionModel.LtsSpecific.PurchaseOrderNumber } });}

PurchaseOrderNumber 是我所追求的。该值被传递到下一个阶段:

@{
   var obj = ViewData["PurchaseOrderNumber"];  
 }

在同一个视图中:

Html.RenderAction("FinishedCalibrationForm", obj);

如何在我的控制器中检索这个?我知道以下内容不正确,但您明白了。

public PartialViewResult FinishedCalibrationForm( string obj)

感谢所有帮助。

【问题讨论】:

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


    【解决方案1】:

    调用Html.RenderActionHtml.ActionUrl.Action 基本相同。有许多不同的重载,但本质上,第一个参数是动作名称,第二个参数将是控制器名称或路由值的匿名对象,第三个参数将是路由值的匿名对象 如果第二个参数用于控制器名称

    不管怎样,你传入的任何路由值都将用于查找和调用相关的动作,其中包括动作的参数。因此,对于您的示例:

    Html.RenderAction("FinishedCalibrationForm", new { obj = obj })
    

    会正确地将obj 传递到您的操作方法中。正如你现在所拥有的,它将obj 的值解释为动作所在的控制器名称,这显然是不正确的。

    【讨论】:

    • 信不信由你我刚刚想通了,你是对的。干杯。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-20
    • 2020-10-28
    相关资源
    最近更新 更多