使用一个从Html.RenderAction返回的对象

本文关键字:RenderAction Html 返回 对象 一个 | 更新日期: 2023-09-27 18:17:40

我使用的是Html。RenderAction来调用控制器中的方法。控制器方法返回一个自定义对象,我想知道如何在视图中使用这个返回对象。

视图

//at the top
@model ServiceCheckerUI.Models.DeleteDeliverableModel
@{ Html.RenderAction("retrieveDeliverableInfo","DeliverableManagement", new {uniqueId = element});}
//Trying to use the model property
Model.deliverableResponse.{properties}
控制器

public ActionResult retrieveDeliverableInfo(string uniqueId){
    var response = _target.DoSomething();
    return PartialView("DeleteDeliverable", new DeleteDeliverableModel {deliverableResponse = response});
}

模型
namespace ServiceCheckerUI.Models
{
    public DeleteDeliverableModel
    {
        //omit
        public GetDeliverableResponse deliverableResponse {get;set}
    }
}

getdeliverablerresponse对象有id、name等字段,它们是字符串和整型。

使用一个从Html.RenderAction返回的对象

RenderAction用于直接向页面写入响应,并帮助缓存部分视图。你的方法应该返回局部视图而不是GetDeliverableResponse。您可以定义分部视图并使用GetDeliverableResponse作为它的模型。

public ActionResult RetrieveDeliverableInfo(string uniqueId)
{
    var response = _target.DoSomething();
    return PartialView("_Deliverable", response );
}

这里_Derliverable将是您的部分视图,将GetDeliverableResponse作为模型。为了使它更简洁,您还可以将响应对象包装在_Derliverable的专用模型类中,如下所示:

class DerliverableModel
{
   public GetDeliverableResponse Derliverables { get; set; } 
}

现在在你的动作方法中你需要传递这个模型的对象:

return PartialView("_Deliverable", new DerliverableModel { Derliveries = response });