1

dropdownlistビューにカテゴリを挿入するにはどうすればよいですか?

私はモデルを持っています

public class IdeaModel
{
    [Required]
    [Display(Name = "Idea tilte")]
    [StringLength(250, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
    public string IdeaTilte { get; set; }

    [Required]
    [Display(Name = "CategoryName")]
    public string CategoryName { get; set; }

    [Required]
    [Display(Name = "CategoryID")]
    public int CategoryID { get; set; }

    [Display(Name = "Main content")]
    [DataType(DataType.MultilineText)]
    [StringLength(1000, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 30)]
    public string Content { get; set; }
}

私のビュー (TextBoxFor CategoryName と CategoryID の代わりに 1 つのドロップダウン リストが必要です)

@model TakesCare.Models.IdeaModel



<section id="">
@using (Html.BeginForm()) {
    @Html.AntiForgeryToken()
    @Html.ValidationSummary()
    @ViewBag.Status


    <fieldset>
        <legend>Add an idea</legend>
        <ol>
            <li>
                @Html.LabelFor(m => m.IdeaTilte)
                @Html.TextBoxFor(m => m.IdeaTilte)
            </li>
            //one dropdownlist, instead of TextBoxFor CategoryName and CategoryID
            <li>
                @Html.LabelFor(m => m.CategoryName)
                @Html.TextBoxFor(m => m.CategoryName)
            </li>
            <li>
                @Html.LabelFor(m => m.CategoryID)
                @Html.TextBoxFor(m => m.CategoryID)
            </li>*@
            <li>
                @Html.LabelFor(m => m.Content)
                @Html.EditorFor(m => m.Content)
            </li>
        </ol>
        <input type="submit" value="AddIdea" />
    </fieldset>
}
</section>

カテゴリがあります:

"Cat1"、id=1

"Cat2"、id=2

"Cat3"、id=3

私の最初の質問は、このデータをどこに保存すればよいですか? (カテゴリー名
とID)IdeaModel

2 番目の質問は、dropdownlistすべてのカテゴリに表示する方法です。次に、これから HttpPost で ID 値を取得する方法を教えてdropdownlistください。最も簡単な解決策は何ですか?

4

2 に答える 2

3

データベースにテーブルを作成して、ドロップダウンリストを格納し、テーブルにアクセスすることもできます (OR)

次のように、モデルのプロパティをモデルのカテゴリとして定義します。

public IEnumerable<SelectListItem> Categories
        {
            get
            {
                return new[]
                {
                    new SelectListItem { Value = "1", Text = "Cat1"},
                    new SelectListItem { Value = "2", Text = "Cat2" },
                    new SelectListItem { Value = "3", Text = "Cat3" }
                };
            }
        }

あなたのビューでは、次のようにアクセスする必要がありますHtml.DropdownlistFor

@Html.DropDownListFor(m=>m.CategoryID ,Model.Categories)

データを投稿すると、モデルの CategoryId プロパティで ID を受け取ります

于 2013-04-03T12:12:18.743 に答える
0

ViewBag で SelectList を作成することをお勧めします。これを呼び出してドロップダウンに入力できます...カテゴリ名が表示され、カテゴリ ID が返されます。

コントローラーで:

var categories = db.IdeaModel.OrderBy(CategoryName);
SelectList categoryList = new SelectList(categories, "CategoryId", "CategoryName");
viewBag.categoryList = categoryList;

ビューで:

@Html.DropDownListFor(m=>m.CategoryId, @ViewBag.categoryList)
于 2013-11-30T00:24:09.050 に答える