2014-07-15 5 views
1

'이 개체에 대해 정의 된 매개 변수가없는 생성자가 없습니다'예외가 발생했으며 범인은 내보기에서 @ Html.Action입니다. 나는 이것이 왜 일어나는지를 알아 낸다. 어떤 도움이라도 대단히 감사하겠습니다.@ 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 부분보기

@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

매개 변수에 대한 모델을 취하는 ['Action()'메서드가 없습니다] (http://msdn.microsoft.com/en-us/library/system.web.mvc.html.childactionextensions.action() v = vs.118) .aspx). 왜 Action()을 사용해야합니까? –

+0

당신은'@Html.Action ("MoreJobs", Model); 대신'@ Html.RenderAction ("MoreJobs", Model);' –

답변

1

부분 뷰를 렌더링해야한다고 생각합니다. 모델을 매개 변수로 사용하는 Html.Action에는 오버로드가 없습니다. 사실 당신이 컨트롤러에 @Html.Action("MoreJobs", Model);를 사용하여 모델을 바인딩 할 수 없습니다

@Html.Partial("MoreJobs", new MiniJobsView(Model)) 
0

: 당신이 원하는 일을위한 솔루션은이 같은 Html.Partial 방법을 사용하는 것입니다.

시도 @Html.Partial("MoreJobs", new MiniJobsView(Model)) 무슨 CodeNotFound가 말 했습니까?