MVC 5를 EntityFramework와 함께 사용하고 있는데 Data Annotations를 사용하여 관련 객체를 필수 필드로 선택할 수없는 것처럼 보입니다.관련 개체를 만드는 방법은 무엇입니까?
내 모델은 매우 간단합니다. 움직임이 매우 간단 mobels있는 2 개 관련 기관, 사람 및 위치를 가지고
public class Movement
{
[Key]
public int MovementID { get; set; }
[Required(ErrorMessage = "Type is required.")]
[MaxLength(50, ErrorMessage = "Type cannot be longer than 50 characters.")]
public string Type { get; set; }
[Required(ErrorMessage = "Persons name is required.")]
public virtual Person Name { get; set; }
[Required(ErrorMessage = "Location is required.")]
public virtual Location Location { get; set; }
}
: 여기 내 Movement.cs 모델이다. 내 만들기 운동 양식에서 나는 다음 뷰 모델 사용
public class MovementFormViewModel
{
public Movement Movement { get; set; }
public IEnumerable<SelectListItem> Types { get; set; }
public int? SelectedLocation { get; set; }
public int? SelectedPerson { get; set; }
}
그리고 여기 내 컨트롤러 :
@Html.DropDownListFor(
x => x.SelectedPerson,
Model.People,
"-- Select a Person --")
<p class="text-error">
@Html.ValidationMessageFor(model => model.MarketMovement.Name)
</p>
경우 :
private MovementFormViewModel createViewModel(Movement movement)
{
var types = new[]
{
new SelectListItem{ Text="Transfer", Value = "Transfer" },
new SelectListItem{ Text="Promotion", Value = "Promotion" },
new SelectListItem{ Text="N/A", Value = "N/A" }
};
var locations = db.Locations.ToArray().Select(x => new SelectListItem
{
Value = x.LocationID.ToString(),
Text = x.Name
});
var people = db.People.ToArray().Select(x => new SelectListItem
{
Value = x.PersonID.ToString(),
Text = x.FullName
});
MovementFormViewModel viewModel = new MovementFormViewModel
{
Movement = movement,
Types = types,
Locations = locations,
People = people
};
return viewModel;
}
public ActionResult Create()
{
return View(createViewModel(new Movement()));
}
마지막으로 뷰를 생성의 나
가 내 관련 기관에 대해 다음을 가지고 폼을 제출하면 Person 및 Location 필드가 필요하다는 유효성 검증 오류가 발생하지만 드롭 다운 목록에서 항목을 선택하고 다시 제출하려고하면 폼이 validat를 발생시킵니다 그 엔트리가 필요하고 계속 진행할 수 없다.내가 뭘 잘못하고 있니?
감사합니다. 감사합니다. 그러나 대신 ViewModel의 SelectedPerson 및 SelectedLocation 속성으로 [Required] 태그를 이동하여 유효성 검사가 트리거되지 않습니다 – Evonet
Ahuch, nullable을 으로 변경하면 감사하겠습니다! –
Evonet