我在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));
}
有人知道参数为何为空?
答案 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。