タイトルとテキストを入力するcshtmlフォームがあります。達成したいのは、すべてが有効な場合、つまりデータ入力が成功した場合、画像パネルを表示し、新しいエントリのIDを取得して次のようにすることです。画像パネル内で使用できます。
現在、私は次のものを持っています:-
コントローラー:-
[HttpPost]
public ActionResult Create(Project project)
{
var model = new CompositeImageModel(0);
if (ModelState.IsValid)
{
model = new CompositeImageModel(project.ProjectID);
ViewBag.ProjectID = project.ProjectID;
db.Projects.Add(project);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.ProjectID = 0;
return View(model);
}
CSHTML:=
<script type="text/javascript">
$(document).ready(function () {
var imageList = $('#imageList'),
submitButt = $('#submitButt');
//hide the imageList initially
imageList.hide(); //hide all but the first paragraph
//when the user clicks on the create button, display the imageList
submitButt.click(function () {
imageList.fadeIn('slow');
});
});
</script>
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<fieldset>
<legend>Project</legend>
<div class="editor-label">
@Html.LabelFor(model => model.projectModel.ProjectTitle)
</div>
<div class="editor-field">
@Html.TextBoxFor(model => model.projectModel.ProjectTitle, new { style = "width:460px" })
@Html.ValidationMessageFor(model => model.projectModel.ProjectTitle)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.projectModel.ProjectText)
</div>
<div class="editor-field">
@Html.TextAreaFor(model => model.projectModel.ProjectText, new { cols = 55, @rows = 5 })
@Html.ValidationMessageFor(model => model.projectModel.ProjectText)
</div>
<div id='submitButt'>
<input type="submit" value="Create" />
</div>
</fieldset>
}
<div id='imageList'>
<h2>Upload Image(s)</h2>
@{ Html.RenderPartial("~/Views/File/ImageUpload.cshtml", new MvcCommons.Models.CompositeImageModel((int)ViewBag.ProjectID)); }
</div>
<div>
@Html.ActionLink("Back to List", "Index")
</div>
私のアイデアはModelState.IsValid
、jQueryスクリプトの内部をチェックし、Is.Validの場合は、imagePanelを表示して、ViewBagのProjectID
内部を取得することでした。
しかし、これを取得する方法がわかりません。結局のところ、それが最良のアイデアであるか、それとももっと良いアイデアがあるのでしょうか。
あなたの助けと時間をありがとう