내가 Umbraco를 사용한 지 오래되었습니다. 현재 형태가 많은 Umbraco 7 인스턴스를 설정합니다. ModelState를 올바르게 처리하는 데 어려움을 겪고 있습니다. 누군가 내가 잘못하고있는 것을 설명 할 수 있기를 바랍니다. 지난 며칠 동안 많은 기사를 읽었으며 이렇게하는 방법은 여러 가지가있는 것처럼 보였지만 나에게 어떤 시도도 해보지 않았습니다. 나는 지금 내가 어디에 있는지 설명 할 것이다.제출했지만 오류가있는 Umbraco 7 MVC 양식을 반환하려면 어떻게해야합니까?
public override ActionResult Index(RenderModel model)
{
var customModel = model.Content.As<MyCustomPage>();
// Init the model that I want to bind to the form
ViewBag.EditFormModel = new EditFormModel()
{
MyProperty = "init value"
};
return this.CurrentTemplate(customModel);
}
내 폼 모델 : 내보기에서
public class EditFormModel
{
public int Id { get; set; }
[System.ComponentModel.DisplayName("Label")]
[System.ComponentModel.DataAnnotations.Required]
public string MyProperty{ get; set; }
}
: 강력한 형식의 페이지 모델 돌아 동감을 사용
내 페이지 컨트롤러
@{
// Get the model returned after postback if available, otherwise the initialised model
var editFormModel = TempData["EditFormModel"] as LocationEditFormModel ?? ViewBag.EditFormModel as LocationEditFormModel;
}
@Html.Partial("CustomEditForm", editFormModel)
그 부분보기 :
@model EditFormModel
@using (Html.BeginUmbracoForm("PostForm", "PostFormSurface", FormMethod.Post))
{
@Html.ValidationSummary(false, string.Empty)
@Html.AntiForgeryToken()
@Html.EditorFor(m => m.MyProperty)
<input type="submit" class="btn btn-primary" value="Submit" />
}
내 표면 컨트롤러 :
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult PostForm(LocationSearchFormModel model)
{
bool passesServerSideValidation = this.Validate(model);
if (passesServerSideValidation)
{
// Save and perform a redirect
}
else
{
// I read something that suggested I should clear model state here but it doesn't seem to make a difference
ModelState.Clear();
ModelState.AddModelError(string.Empty, "Not valid");
}
// Add the model to temp data so we can retain values on postback
TempData["SearchFormModel"] = model;
return CurrentUmbracoPage();
}
문제는 내가 양식을 제출하면, 지점에서 나는 내가 예상대로 ModelState.IsValid
이 거짓임을 관찰 할 수있는 라인 return CurrentUmbracoPage();
을 공격한다는 것입니다. 그러나 단계별로 살펴보면 다음 줄은 페이지의 컨트롤러에있는 Index 메서드입니다. 즉시 ModelState.IsValid
이 참입니다. 따라서 양식이 다시로드 될 때 유효성 검사 요약이 표시되지 않습니다.
분명히 여기서 뭔가 잘못하고 있지만 아직 읽지 않은 것은 올바른 방향으로 나를 가리키고 있습니다. 당신의 충고에 감사드립니다.
시간 내 주셔서 감사합니다.하지만 CurrentUmbracoPage()를 반환하면 내 ModelState가 내 뷰에 유지되지 않으므로 MVC의 유효성 검사 요약 등을 사용할 수 없습니다. 이제는이 문제에 대한 멋진 해결책을 발견했습니다. 시간이있을 때 여기에 게시하십시오. – getsetcode
쿨! 윌 다음보세요 :) –