2014-01-13 31 views
0

Im从asp.net Mvc应用程序中的局部视图调用Html.Action。该调用是由一个void方法实现的,该方法应该接收模型对象的局部视图,但该方法接收到null。Html.Action从局部视图

正在添加模型中以部分视图:

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

Html.Action:

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

在bookedResources接收零空隙方法:

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

任何人都知道为什么参数一片空白?

+0

你能张贴'BookedResource'的代码? – rae1

回答

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作为参数类型:

​​
0

Html.Action()获取路径值,而不是模型。

用jquery ajax回调你的控制器动作可能会更好。无论如何,我从来没有真正看过Html.Action。它旨在返回HTML。