は、私は従来のASP時代からWeb開発に取り組んで持っていますWebformsをよく把握しています。 MVCは非常にエキサイティングであり、良い進歩を遂げています。しかし、今私はこのフォーラムで助けが必要な状況に陥っています。
クエリの背景
私は親ビューを持っており、その中に部分的なビューがあります。部分ビューにはフォームと送信ボタンがあります。部分ビューには独自のローカルビューモデルがあり、そのビューモデルは親ビューモデルのプロパティの1つです。
パーシャルビューの検証が失敗した場合は、親ビューをそのまま表示し、部分ビューで無効なフィールドを強調表示します。
コードはどこにも破損していませんが、検証エラーが発生した場合、何らかの形で、渡された初期化モデルで親ビューを表示する正しい方法が見つかりません。もちろん、部分的な見方でエラーを強調表示することもできます。
ご協力いただければ幸いです。ありがとう。
ビューモデル::
コードは次のようになります
public class ParentViewModel
{
public int TitleId { get; set; }
public string Name { get; set; }
public ChildViewModel Child { get; set; }
}
public class ChildViewModel
{
[Required]
public decimal Rating { get; set; }
[Required]
[StringLength(500)]
[Display(Description = "Review")]
[RegularExpression("([a-zA-Z0-9 .&'-]+)", ErrorMessage = "Enter only alphabets and numbers of First Name")]
public string ReviewText { get; set; }
}
コントローラ
public class TestController : Controller
{
public ActionResult Index()
{
var model = new ParentViewModel()
{
TitleId = 1,Name = "Parent name",
Child = new ChildViewModel()
{
Rating = 2.5M, ReviewText = "Its a must watch!"
}
};
return View("Index", model);
}
[HttpPost]
public ActionResult SubmitReview(ChildViewModel model)
{
if (ModelState.IsValid)
{
return View("_child", model);
}
ModelState.AddModelError("", "Some Error.");
return View("_child", model);
}
}
親ビュー
@model ParentViewModel
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<title>Index</title>
</head>
<body>
<div>
@Model.TitleId, @Model.Name
</div>
<div>
@Html.Partial("_child", Model.Child)
</div>
</body>
</html>
部分図(_child.cshtml)
@model ChildViewModel
@using (Html.BeginForm("SubmitReview", "Test"))
{
@Html.ValidationSummary(true)
@Html.TextBoxFor(m => m.Rating) @Html.ValidationMessageFor(m => m.Rating)
@Html.TextBoxFor(m => m.ReviewText) @Html.ValidationMessageFor(m => m.ReviewText)
<input type="submit" value="Log in" />
}
。しかし、提出時に再び親モデルを初期化するのを避ける方法はありますか?今、私はSubmitReviewに親モデルを渡そうとしていますが、親モデルは値を覚えていません。しかし、あなたの提案のおかげで、私はそれが動作しますcozを実装します。送信時に –
、どのように私はそれを初期化するために親のキーを保持する必要がありますか? .....私はいくつかの意味があると思います..... –
フォームを親ビューに移動することができます(これは実際には良い方法です)。隠しフィールドに親モデルを追加すると、サブミットをクリックすると完全なデータが得られますコントローラーで –