ASP.NET MVC 5에서 Razor 템플릿 엔진을 사용하여 양식을 작성하려고합니다.
메인 뷰에 전달하는 다음과 같은 캡슐화 된 호출이 있습니다.
public class ManagePresenter
{
public ActionFormViewModel ActionForm { get; set; }
public List<SelectListItem> Users { get; set; }
}
그런 다음 나는이 견해가
@using(Html.BeginForm("Index", "Manage", FormMethod.Post, new { @class = "form-inline", Id = "ManageEmployeeForm" }))
{
Html.AntiForgeryToken();
Html.HiddenFor(m => m.ActionForm.From);
Html.HiddenFor(m => m.ActionForm.To);
<div class="form-group">
@{
Html.LabelFor(m => m.ActionForm.UserId, new { @class = "sr-only" });
Html.DropDownListFor(x => x.ActionForm.UserId, Model.Users, new { @Class = "form-control" });
Html.ValidationMessageFor(m => m.ActionForm.UserId);
}
</div>
<div class="checkbox">
<label>
<label>
@Html.CheckBoxFor(m => m.ActionForm.ShowAlternateEntries, new { Title = "Alternate entries are entries from the telephony system that will help you compare against manual entries" })
</label>
</label>
</div>
<button type="submit" class="btn btn-primary" id="ManageEmployeeGetTime">View Records</button>
}
하지만 내 응용 프로그램을 실행할 때마다 다음 오류가 발생합니다.
CS1928 : 'System.Web.Mvc.HtmlHelper'에 'DropDownListFor'에 대한 정의가 포함되어 있지 않으며 최상의 확장 메서드 오버로드 'System.Web.Mvc.Html.SelectExtensions.DropDownListFor <TModel, TProperty> (System.Web.Mvc. HtmlHelper <TModel>, System.Linq.Expressions.Expression>, System.Collections.Generic.IEnumerable <System.Web.Mvc.SelectListItem>, object) '에 잘못된 인수가 있습니다.
이 오류의 원인은 무엇입니까? Model.Users
이다List<SelectListItem>
내가 여기서 무엇을 놓치고 있습니까?
오류는 (귀하의 경우) DropDownListFor()
메서드 의 인수 중 하나 가 유효하지 않으며 논리적으로 이것은 두 번째 매개 변수 (for IEnumerable<SelectListItem>
) 일 수 있음을 의미합니다.
당신은 모델 속성을 포함하고 있다고 주장했다 public List<SelectListItem> Users { get; set; }
당신이 중 하나는 당신이 자신의 클래스 이름을 만든 있도록 SelectListItem
또는에 대한 참조를 포함 시켰 System.Web.WebPages.Html
하고 사용하고 SelectListItem
그 클래스 조립보다는 SelectListItem
클래스를 System.Web.Mvc
.
일반적으로는 필요하지 System.Web.WebPages.Html
않지만 어떤 이유로 필요한 경우 모델에서 클래스의 정규화 된 이름을 사용합니다.
public List<System.Web.Mv.SelectListItem> Users { get; set; }
참고로 뷰는 양식 컨트롤을 생성하지 않습니다 (ckeckbox 및 제출 버튼 제외). 귀하는 접두사 않은 HtmlHelper
와 방법 @
에있어서 실행되는 것을 의미하는, 그러나 그것은 뷰가 출력되지 않을 것이다 초래한다. 보기를 다음으로 변경해야합니다.
@using(Html.BeginForm("Index", "Manage", FormMethod.Post, new { @class = "form-inline", Id = "ManageEmployeeForm" }))
{
@Html.AntiForgeryToken();
@Html.HiddenFor(m => m.ActionForm.From);
@Html.HiddenFor(m => m.ActionForm.To);
<div class="form-group">
@Html.LabelFor(m => m.ActionForm.UserId, new { @class = "sr-only" });
@Html.DropDownListFor(x => x.ActionForm.UserId, Model.Users, new { @class = "form-control" });
@Html.ValidationMessageFor(m => m.ActionForm.UserId);
</div>
....
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다