불필요한 속성에서 Model.IsValid에 문제가 있습니다.Model.IsValid에 문제가 없습니다. 필요하지 않은 속성에
다음은 코드입니다. Edit.cshtml에
BeginForm
@using (Html.BeginForm("Edit", "Member", FormMethod.Post, new { enctype = "multipart/formdata" }))
{
@Html.Partial("_MemberForm", Model.Member)
}
MemberEditViewModel 파일 (Edit.cshtml 파일 사용)
public class MemberEditViewModel
{
public MemberFormModel Member { get; set; }
}
MemberFormModel : _MemberForm.cshtml의
public class MemberFormModel : ICreateMemberCommand, IValidatableObject
{
public int Id { get; set; }
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
[Required]
public string SocialSecurityNumber { get; set; }
[Required]
public int PinCode { get; set; }
[Required]
public char Gender { get; set; }
public string Email { get; set; }
[Required]
public string Address { get; set; }
[Required]
public string ZipCode { get; set; }
[Required]
public string ZipAddress { get; set; }
public string Phone { get; set; }
public string Phone2 { get; set; }
[Required]
public string City { get; set; }
[Required]
public int CountryId { get; set; }
//not required (but still displaying error it's required)
public Membership Membership { get; set; }
// not required (displaying error it's required)
public PunchCard PunchCard { get; set; }
public bool IsActive { get; set; }
블록 (부분)
<fieldset>
<dl>
<dt>@Html.LabelFor(m => m.Id)</dt>
<dd>@Html.TextBoxFor(m => m.Id, new { disabled = "disabled", @readonly = "readonly" })</dd>
<dt>@Html.LabelFor(m => m.PinCode)</dt>
<dd>@Html.EditorFor(m => m.PinCode)</dd>
<!-- problem with membership, maybe with the .FromData/ToDate ? -->
<dt>@Html.LabelFor(m => m.Membership)</dt>
<dd>@Html.EditorFor(m => m.Membership.FromDate, new { @name = "Membership" }) -
@Html.EditorFor(m => m.Membership.ToDate, new { @name="Membership"})</dd>
<!-- problem with punch card, maybe with the .Times ? -->
<dt>@Html.LabelFor(m => m.PunchCard)</dt>
<dd>@Html.EditorFor(m => m.PunchCard.Times, new { @name = "PunchCard" })</dd>
</dl>
</fieldset>
MemberController 편집 작업
// POST: /Members/10002/Edit
[HttpPost]
public ActionResult Edit(FormCollection formValues, MemberFormModel memberForm)
{
var errors = ModelState.Values.SelectMany(v => v.Errors);
if(IsSaveOperation(formValues)){
if(TryUpdateMember(memberForm)){
return RedirectToAction("Details", "Member", new {id = memberForm.Id});
}
}
var mm = new MemberEditViewModel{ Member = memberForm };
return View(mm);
}
Membership.cs
public class Membership
{
public Membership(){ /* empty constructor */}
public Membership(int id, int memberId, DateTime fromDate, DateTime toDate)
{
Id = id;
MemberId = memberId;
FromDate = fromDate;
ToDate = toDate;
}
public int Id { get; set; }
public int MemberId { get; set; }
[DataType(DataType.Date)]
public DateTime FromDate { get; set; }
[DataType(DataType.Date)]
public DateTime ToDate { get; set; }
}
PunchCard.cs
당신은 내가 어떤 [필수] 속성을 가지고 있겠지 참조public class PunchCard
{
public PunchCard() { /* empty constructor */ }
public PunchCard(int memberId, int times, DateTime createdDate, DateTime modifiedDate)
{
this.MemberId = memberId;
this.Times = times;
this.CreatedDate = createdDate;
this.ModifiedDate = modifiedDate;
}
public int Id { get; set; }
public int MemberId { get; set; }
public int Times { get; set; }
public DateTime CreatedDate { get; set; }
public DateTime ModifiedDate { get; set; }
}
, 어느 것도 MemberFormModel에서 . 그렇다면 그 두 명은 어떻게 필요합니까? 그것의 신비.
@Html.TextBoxFor(m => m.Id, new { disabled = "disabled", @readonly = "readonly" })
내가 장애인 속성이 우선 당신이 양식을 제출하면 ID 값이 서버로 전송되지 않습니다 같아요
편집 작업에서 ModelState.Remove ("PunchCard.Times")를 추가했는데 문제가 해결되었지만 다른 해결책이 있습니까? [Bind (Exclude)] 속성을 시도했지만 작동하지 않습니다. – n3tx