확장 메소드는 동적으로 디스패치 할 수 없습니다
MVC에 DropDownListFor를 갖고 싶습니다.
@foreach (var item in Model)
{
@Html.DropDownListFor(modelItem => item.TitleIds, new SelectList(ViewBag.TitleNames as System.Collections.IEnumerable, "TitleId", "Title.TitleText"), "No: " + ViewBag.MagNo, new { id = "TitleIds" })
}
컨트롤러에서
public ActionResult ArticleList(int id)
{
ArticleWriter_ViewModel viewModel = new ArticleWriter_ViewModel();
Func<IQueryable<NumberTitle>, IOrderedQueryable<NumberTitle>> orderByFunc = null;
Expression<Func<NumberTitle, bool>> filterExpr = null;
if (id > 0)
{
filterExpr = p => p.MagazineId.Equals(id);
}
var wholeTitles = unitOfWork.NumberTitleRepository.Get(filterExpr, orderByFunc, "Magazine,Title").ToList();
ViewBag.MagNo = wholeTitles[0].Magazine.MagNo.ToString();
ViewBag.MagId = wholeTitles[0].Magazine.Id;
ViewBag.TitleNames = wholeTitles;
return View("../Panel/Magazine/ArticleList", "_BasicLayout", viewModel);
}
하지만이 오류가 발생합니다.
'
System.Web.Mvc.HtmlHelper<System.Collections.Generic.IEnumerable<Cinemavaadabiat.ViewModel.ArticleWriter_ViewModel>>
'에는 ' '(이)라는 메소드 가능한 메소드가 없습니다DropDownListFor
. 확장 메소드는 동적으로 디스패치 할 수 없습니다. 확장 메서드 구문없이 동적 인수를 캐스팅하거나 확장 메서드를 호출하는 것이 좋습니다.
오류를 수 없습니다. 무엇을 확인해야합니까?
지원되지 않는 확장 메소드에서 동적 유형을 사용하고 있습니다.
동적 유형을 실제 유형으로 캐스트하면 작동합니다.
내가 지금 본 것에서, 나는 말할 것이다 :
(string) ViewBag.MagNo
결과는
@foreach (var item in Model)
{
@Html.DropDownListFor(modelItem => item.TitleIds,
new SelectList(ViewBag.TitleNames as System.Collections.IEnumerable,
"TitleId", "Title.TitleText"),
"No: " + (string) ViewBag.MagNo,
new { id = "TitleIds" })
}
이 문제에 대한 나의 해결책은 다음을 추가합니다.
@model MyModel
부분 제어의 상단에 있습니다. 나는 그것을 잊었다.
MVC 확장 방법의 주제 (이 질문에서 실행되는 방법)를 확장하기 위해 Dapper의 connection.Query()
구문 을 사용하여 결과를 반환합니다 IEnumerable<dynamic>
.
다음과 같은 방법으로 동적 객체를 사용할 수도 있습니다.
Jon Skeet의 답변에 따라 메소드를 직접 호출하십시오 .
@model IEnumerable<dynamic> @PartialExtensions.Partial(Html, "~/link/to/_partialView.cshtml", Model)
수업에 싸서
public class DynamicQueryResult { public dynamic QueryResults {get; set;} }
그런 다음 MVC보기에서 :
@model Namespace.DynamicQueryResult @Html.Partial("~/link/to/_partialView.cshtml", Model)
참고 URL : https://stackoverflow.com/questions/20932646/extension-methods-cannot-be-dynamically-dispatched
'IT' 카테고리의 다른 글
Objective-C에서 객체를 복사하는 방법 (0) | 2020.08.03 |
---|---|
CoffeeScript를 사용하여 객체에 키가 있는지 확인하는 가장 간단한 방법 (0) | 2020.08.03 |
C # String.Format () 및 String.Join ()에 해당하는 Java (0) | 2020.08.03 |
디자인 타임에 변수를 사용하여 선언 된 변수를 어떻게 안정적으로 확인할 수 있습니까? (0) | 2020.08.03 |
PHP에서 POST를 통해 동일한 이름을 가진 여러 입력 (0) | 2020.08.03 |