部分视图中的Html.Action

时间:2014-01-13 19:52:35

标签: asp.net asp.net-mvc

我在asp.net Mvc应用程序中从局部视图调用Html.Action。调用void方法,该方法应该接收进入局部视图的模型对象,但方法接收null。

模型进入部分视图:

@model IEnumerable<RA.Web.Models.BookedResource>

Html.Action:

@Html.Action("SendEmailConfirmation", "BookedResource", Model.ToList())

在scheduledResources中接收null的void方法:

public void SendEmailConfirmation(List<BookedResource> bookedResources)
{
    var email = new Email();
    email.SendEMail(CurrentUser, "Subject",     CreateBodyForConfirmation(bookedResources)); 
}

有人知道参数为何为空?

2 个答案:

答案 0 :(得分:1)

Html.Action有一个重载,它将路由值作为对象,但不是List<Object>。您可以创建ViewModel而不是使用List<BookedResource>。见下文:

public class MyViewModel
{
     public List<BookedResource> BookedResources { get; set; }
}

然后在您的视图中使用MyViewModel:

   @model MyViewModel 

   @Html.Action("SendEmailConfirmation", "BookedResource", Model)

最后使用MyViewModel作为参数类型:

public void SendEmailConfirmation(MyViewModel bookedResources)
{
    //
}

答案 1 :(得分:0)

Html.Action()接受路线值,而不是模型。

使用jquery ajax回调到控制器操作可能会更好。我从来没有真正看过Html.Action无论如何使用这种方式。它旨在返回html。