0

タイトルとテキストを入力する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内部を取得することでした。

しかし、これを取得する方法がわかりません。結局のところ、それが最良のアイデアであるか、それとももっと良いアイデアがあるのでしょうか。

あなたの助けと時間をありがとう

4

1 に答える 1

1

最後に、この優れたチュートリアルを見た後、UnobtrusiveAjaxに行きました

于 2012-06-04T09:25:31.847 に答える