0

カテゴリ名を取得する必要がある blogPost があり、これを行うために get アクションで次のようにしました。

public ActionResult Add()
        {
            ViewBag.CategoryList = new SelectList(_categoryRepository.GetAllCategory(), "Id", "Name");
            return View(new BlogPost());

        }

そして私が持っているビューで:

@model Blog.Domain.Model.BlogPost
@{
    ViewBag.Title = "AddPost";
    Layout = "~/Areas/Admin/Views/Shared/_AdminLayout.cshtml";
}

<fieldset>
    @using (Html.BeginForm("Add", "Blog", FormMethod.Post))
    {
        @Html.ValidationSummary()
        <div>
            @Html.LabelFor(b => b.Title)
            @Html.TextBoxFor(b => b.Title)
            @Html.ValidationMessageFor(b => b.Title)
        </div>

        <div>
            @Html.LabelFor(b => b.Body)
            @Html.EditorFor(b => b.Body)
            @Html.ValidationMessageFor(b => b.Body)
        </div>

        <div>
            @Html.LabelFor(b => b.Summary)
            @Html.TextBoxFor(b => b.Summary)
            @Html.ValidationMessageFor(b => b.Summary)
        </div>

        <div>
            @Html.LabelFor(b => b.Category)
            @Html.DropDownListFor(model => model.Category.Id, ViewBag.CategoryList as SelectList, "--- Select Category ---", new { @class = "some_class" })
        </div>
        <div>
            <input type="submit" value="Add Post" />
        </div>
    }
</fieldset>

Post アクションでは、次のコードを記述しました。

[HttpPost]
        public ActionResult Add(BlogPost blogPost)
        {
            if (ModelState.IsValid)
            {
                blogPost.PublishDate = DateTime.Now;
                _blogPostRepository.AddPost(blogPost);
                _blogPostRepository.Save();
                return View();
            }
            return View();
        }

私はこのコードが正確に正しく書かれたかどうか確信が持てませんが、私は孤独な時間のためにこの問題を抱えています! エンティティフレームワークを使用してマスター詳細を挿入します。この場合、カテゴリを選択してデータベースに正常に送信します。以前にこのようなことを書いている場合は、それについて私を助けてください、ありがとう

4

1 に答える 1

0

2 つのドロップダウン リストを設定し、1 つの値をモデルの ID フィールドに割り当てているように見えますが、これはブログ投稿エンティティの ID であると想定しています..?

  1. @Html.DropDownList(...) ステートメントを削除します
  2. @Html.DropDownListFor(...) の最初のパラメータを、モデル/エンティティの CategoryId プロパティを選択するラムダ式に変更します (カテゴリの FK フィールド名が何であれ、おそらくモデル => model.CategoryId)。

    @Html.LabelFor(b => b.Category) @Html.DropDownListFor(model => model.CategoryId, ViewBag.CategoryList as SelectList, "--- カテゴリを選択 ---", new { @class = "some_class" } )
于 2013-03-25T21:06:00.037 に答える