1

SelectListItemの値をintにする必要があります。

そこで、データベースからプルし、プロセスで文字列に変換して、listitemの値に保存します。

public class BookAdd
{
public BookAdd()
{
public Book Book { get; set; }
DataModelContainer db = new DataModelContainer();
IEnumerable<SelectListItem> items = db.PublisherSet
               .Select(i => new SelectListItem
               {
                 Value = SqlFunctions.StringConvert((double)i.Id), 
                 Text = i.Name
               });
    }
}

次に、ドロップダウンリストから選択したときに、値をintとしてBook.PublisherIdに再度格納する必要があります。以下のコードが完全ではないことを知っています。選択したアイテムの値をintに変換する必要があると考えました。どうすればよいですか?

@model Bookshops.Models.BookAdd
...
@Html.DropDownListFor(model => model.Book.PublisherId, Model.items);

そして最後にコントローラー:

    public ActionResult Create2()
    {
        var bookAdd = new BookAdd();
        ViewBag.Publisher = bookAdd.items;
        return View(bookAdd);
    }

    //
    // POST: /Book/Create

    [HttpPost]
    public ActionResult Create2(BookAdd book)
    {
            if (ModelState.IsValid)
            {
                Book book2 = new Book();
                book2.Id = book.Book.Id;
                book2.AuthorId = book.Book.AuthorId;
                book2.Isbn = book.Book.Isbn;
                book2.Id = int.Parse(book.Book.PubId);
                book2.Title = book.Book.Title;
                book2.YearPublished = book.Book.YearPublished;

                db.BookSet.Add(book2);
                db.SaveChanges();
            }
            return RedirectToAction("Index");
    }

私はMVC3、EF4を使用しています。

4

3 に答える 3

3

を構築する代わりに、次のSelectListItemようなものを構築しました。

public struct BookItem
{
   int id;
   string name;
}

次に、次のアイテムをモデルに追加し、データを選択します

IEnumerable<BookItem> bookList {get; set;}

最後に

@Html.DropDownListFor(model => model.Book.PublicherId, new SelectList(Model.bookList, "id", "name"))
于 2012-12-10T13:51:10.887 に答える
0

DropDownList の選択されたアイテムがポストバックされると、この Convert.ToInt32(DropDownSelectedItem) のように文字列から int に変換するか、Int32.TryParse(value, out number) を使用します

于 2012-06-27T17:45:50.830 に答える
0

まず、マッピング コードを次のように単純化できます。

db
    .PublisherSet
    .Select(x=> new SelectListItem{Value = x.Id.ToString(), Text = x.Name})
    .ToArray();

ビューでは、次に行うことができます

@Html.DropDownListFor(model => model.Book.PublisherId, Model.items);

また、オプションと適切な発行者が選択された select 要素を適切にレンダリングします。

次に、モデル バインディング規則を使用して、ユーザーが送信ボタンをクリックしたときにこれをコントローラー アクションに戻すことができます。

結局全部文字です。それがウェブの性質です。文字列辞書を豊富なビュー モデルに変換するための多くのトリック、コンバーター、およびバインダーがありますが、最終的には単なる文字列です。

于 2012-06-27T17:48:34.833 に答える