我在View中使用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}
}
}
GetDeliverableResponse对象包含id,name等字段,它们是字符串和整数。
答案 0 :(得分:1)
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; }
}
现在在你的action方法中你需要传递这个模型的对象:
return PartialView("_Deliverable", new DerliverableModel { Derliveries = response });