我正在为此对象定义一个无参数构造函数'异常和罪魁祸首是我的视图中的@ Html.Action。我只想弄清楚为什么会这样。任何帮助将不胜感激。
我的控制器
public class AsyncController : Controller
{
public ActionResult Jobs()
{
var jobViewModel = new JobViewModel("Junior Accountant", Sector.Accountancy, DateTime.Now, "Enterprise Banking");
return View(jobViewModel);
}
public ActionResult MoreJobs(JobViewModel model)
{
var viewModel = new MiniJobsView(model);
return PartialView("_Rand.cshtml", viewModel);
}
}
工作视图
@model SampleAsyncPartialViews.ViewModels.JobViewModel
@{
ViewBag.Title = "Jobs";
}
<h2>@Model.Title</h2>
<h3>@Model.CompanyName</h3>
<h3>@Model.Sector</h3>
<h3>@Model.StartDate</h3>
@Html.Action("MoreJobs", Model);
_Rand Partial View
@model SampleAsyncPartialViews.ViewModels.MiniJobsView
<div>
<h1>@Model.Title</h1>
</div>
JobViewModel
namespace SampleAsyncPartialViews.ViewModels
{
public class JobViewModel
{
public JobViewModel(string title, Sector sector, DateTime startDate, string companyName)
{
Title = title;
Sector = sector;
StartDate = startDate;
CompanyName = companyName;
}
public string Title { get; set; }
public Sector Sector { get; set; }
public DateTime StartDate { get; set; }
public string CompanyName { get; set; }
}
public enum Sector
{
Accountancy,
IT,
Marketing,
Sales
}
}
MiniJobsView
namespace SampleAsyncPartialViews.ViewModels
{
public class MiniJobsView
{
public MiniJobsView(JobViewModel model)
{
Title = model.Title;
StartDate = model.StartDate;
}
public string Title { get; set; }
public DateTime StartDate { get; set; }
}
}
我理解异常,我只是不明白为什么@Html.Action必须生成一个新的JobViewModel实例,当我已经通过该模型时。
答案 0 :(得分:1)
我认为您需要将部分视图渲染到视图中。将模型作为参数的Html.Action没有重载。 做你想做的事的解决方案是使用像这样的Html.Partial方法:
@Html.Partial("MoreJobs", new MiniJobsView(Model))
答案 1 :(得分:0)
实际上,您无法使用控制器中的@Html.Action("MoreJobs", Model);
绑定模型。
尝试@Html.Partial("MoreJobs", new MiniJobsView(Model))
CodeNotFound所说的内容。
答案 2 :(得分:0)
Html.Action
方法想要具有路由值的对象之类的数据。
// Correct:
@Html.Action("MoreJobs", new { model = Model});
// Wrong:
@Html.Action("MoreJobs", Model);