0

<input type="submit" value="Create" />ユーザーが作成をクリックすると、アクションメソッドがアクティブになり、結果がデータベースに書き込まれるビューがあります。

ユーザーがビューで [Create Button] をクリックしても、何も起こりません。私が間違っていることを教えていただけますか?ありがとう

using System;

using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using TestGuestBook.Models;
using TestGuestBook.Models.Repositories;
using TestGuestBook.ViewModels;

namespace TestGuestBook.Controllers
{
    [HandleError]
    public class HomeController : Controller
    {

        ICommentRepository _repository;

        public HomeController()
        {
            _repository = new CommentRepository();
        }

        // Dependency Injection enabled constructors
        public HomeController(ICommentRepository repository)
        {
            _repository = repository;
        }

        public ActionResult Index()
        {
            // Get all Comments
            List<Comment> commentItems = _repository.FindAll().ToList();
            // Create the ViewModel and associate the list of comments
            CommentListCreateViewModel viewModel = new CommentListCreateViewModel();
            viewModel.CommentItems = commentItems;

            return View(viewModel);
        }

        public ActionResult Create()
        {
            CommentListCreateViewModel createViewModel = new CommentListCreateViewModel();
            return View(createViewModel);
        }

        [HttpPost]
        public ActionResult Create(CommentListCreateViewModel createViewModel)
        {
            if (ModelState.IsValid)
            {
                Comment comment = new Comment
                {
                    Nominative = createViewModel.Nominative,
                    Email = createViewModel.Email,
                    Content = createViewModel.Content
                };
                _repository.Add(comment);
                _repository.Save();
            }
            return View();
        }

    }
}

意見

@model TestGuestBook.ViewModels.CommentListCreateViewModel
@{
    ViewBag.Title = "Index";
}
<h2>
    Index</h2>
@using (Html.BeginForm())
{
    @Html.ValidationSummary(true)
    <fieldset>
        <legend>ListAddCommentsViewModel</legend>
        <div class="editor-label">
            @Html.LabelFor(model => model.Nominative)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Nominative)
            @Html.ValidationMessageFor(model => model.Nominative)
        </div>
        <div class="editor-label">
            @Html.LabelFor(model => model.Email)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Email)
            @Html.ValidationMessageFor(model => model.Email)
        </div>
        <div class="editor-label">
            @Html.LabelFor(model => model.Content)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Content)
            @Html.ValidationMessageFor(model => model.Content)
        </div>
        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>
}

<table>
    <tr>
        <th>
            Nominative
        </th>
        <th>
            Email
        </th>
        <th>
            Content
        </th>
        <th>
        </th>
    </tr>
    @foreach (var item in Model.CommentItems)
    {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.Nominative)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Email)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Content)
            </td>
            <td>
            </td>
        </tr>

    }
</table>
4

2 に答える 2

0

フォームをCreateコントローラ メソッドに送信する必要があります。

@using (Html.BeginForm("Create", "Home"))
于 2012-07-19T20:07:46.693 に答える
0

Html.BeginForm() のままにしておくことができ、保存後に return RedirectToAction("Index"); を呼び出します。追加されたアイテムがリストに表示されます。おそらくずっと保存していたのでしょう。後で Index ビューにリダイレクトされなかっただけです。

于 2012-07-19T20:30:43.200 に答える