「レビュー」ページにポストバックするときは、モデルの状態を確認し、結果に基づいてページを再表示するか、続行します。私には2つの問題があります。
検証に失敗すると、ページの元のgetで正常にロードされた部分ビューでハングアップします。
編集:これは、[HttpGet]属性がパーシャルビューのメソッドに適用されていることが原因でした。属性を削除し、パーシャルを再調整しました。
パーシャルをコメントアウトすると、ページ全体がCSSスタイルなしで表示されます。すべてテキストが白黒です。 編集:ページにスタイルがないという問題がまだあります
[HttpGet]
public ActionResult Review()
{
var agmtsService = new AgreementsService();
bool? scoreRelease = agmtsService.GetReleaseScoreIndicator();
var vm = new ReviewModel {ReleaseScoreIndicator = scoreRelease};
return View(vm);
}
[HttpPost]
public ActionResult Review(ReviewModel model)
{
if(!ModelState.IsValid)
{
return View(model);`**This is displaying the view w/o head section and no css**`
}
return RedirectToAction("CheckOut", "Financial");
}
編集:
モデルを見る
パブリッククラスReviewModel{
public bool? ReleaseScoreIndicator { get; set; }
// Terms & Conditions
[RequiredToBeTrue(ErrorMessage = "Eligibility Checkbox must be checked.")]
public bool TermsEligibility { get; set; }
[RequiredToBeTrue(ErrorMessage = "True and Accurate Checkbox must be checked.")]
public bool TermsAccurate { get; set; }
[RequiredToBeTrue(ErrorMessage = "Identity Release Checkbox must be checked.")]
public bool TermsIdentityRelease { get; set; }
[RequiredToBeTrue(ErrorMessage = "Score Release Checkbox must be checked.")]
public bool TermsScoreRelease { get; set; }
}
public class RequiredToBeTrueAttribute:RequiredAttribute {public override bool IsValid(object value){return value!= null &&(bool)value; }}
意見
@model Registration.Web.Models.ReviewModel
@{
ViewBag.DisableNavigation = true;
}
<script type="text/javascript">
$(document).ready(function () {
$('.open_review').toggle(function() {
$(this).text('Done').parents('.review_section').addClass('open_for_review').find('.review_content').slideDown('fast');
return false;
}, function() {
$(this).text('Review').parents('.review_section').removeClass('open_for_review').find('.review_content').slideUp('fast');
return false;
});
});
</script>
<div class='section module'>
<h2>
Please Review Your Application
</h2>
<p>
Remember that your application fee is
<strong>
not refundable.
</strong>
Review your information below and make corrections before submitting.
</p>
<div class='review_section'>
<a class="button open_review" href="#">Review</a>
<h4>
Identification
</h4>
@{Html.RenderAction("Review", "PersonalInformation");}
</div>
<div class='review_section'>
<a class="button open_review" href="#">Review</a>
<h4>
Education
</h4>
@{Html.RenderAction("Review", "MedicalEducation");} /////hangs here
</div>
<div class='review_section'>
<a class="button open_review" href="#">Review</a>
@{Html.RenderAction("Review", "PostGraduate");}////then hangs here
</div>
</div>
<div class='actions' id='terms_and_conditions'>
@using (Html.BeginForm("Review", "Agreements", FormMethod.Post))
{
//"reviewForm","Agreements", FormMethod.Post
@Html.ValidationSummary(true)
<div class='group' id='data_release'>
<h4>
Data Release
</h4>
<p>
Do you wish to release your scores?
</p>
<ul class='input_group'>
<li>
@Html.RadioButtonFor(model => model.ReleaseScoreIndicator, true)
<label>
Yes
</label>
</li>
<li>
@Html.RadioButtonFor(model => model.ReleaseScoreIndicator, false)
<label>
No
</label>
</li>
</ul>
</div>
<div class='group' id='terms'>
<h4>
Terms & Conditions
</h4>
@Html.ValidationSummary(false)
<table>
<tbody>
<tr>
<th>
@Html.CheckBoxFor(x => x.TermsEligibility)
@* @Html.CheckBox("terms_eligibility")*@
</th>
<td>
<label for='terms_eligibility'>
I currently meet all of the
<a href="" target="_blank"> requirements</a>
and have read the
<a href="" target="_blank">Information</a>
</label>
</td>
</tr>
<tr>
<th>
@Html.CheckBoxFor(x => x.TermsAccurate)
@* @Html.CheckBox("terms_accurate")*@
</th>
<td>
<label for='terms_accurate'>
The information I've provided is true and accurate
</label>
</td>
</tr>
<tr>
<th>
@Html.CheckBoxFor(x => x.TermsIdentityRelease)
@* @Html.CheckBox("terms_identity_release")*@
</th>
<td>
<label for='terms_identity_release'>
I authorize the release
</label>
</td>
</tr>
<tr>
<th>
@Html.CheckBoxFor(x => x.TermsScoreRelease)
@*@Html.CheckBox("terms_score_release")*@
</th>
<td>
<label for='terms_score_release'>
I agree
</label>
</td>
</tr>
</tbody>
</table>
</div>
<div class='actions'>
<input type="submit" value="Go To Checkout" class="button" />
<a class="button" onclick="getForMasterPage('@Url.Action("CheckOut", "Financial")', null);">BYPASS</a>
</div>
} </div>