0

I try to reinterpretate [this simple tutorial][1]

In Book model I remove ScaffoldColumn(false) above public int AuthorID to have select AuthorID in my view.

After rebiuld I can see this select in Books/Create but it has no options.

In my database I can see, that all my items added in SampleData model has BookID and AuthorID.

Why it has no result in html ?

Edited:

My Book.cs

using System.ComponentModel.DataAnnotations;

namespace ContosoBooks.Models
{
    public class Book
    {

        public int BookID { get; set; }
        [Required]
        public string Title { get; set; }

        public int Year { get; set; }
        [Range(1, 500)]
        public decimal Price { get; set; }

        public string Genre { get; set; }


        public int AuthorID { get; set; }

        // Navigation property
        public virtual Author Author { get; set; }
    }
}

My Author.cs

using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;

namespace ContosoBooks.Models
{
    public class Author
    {
        public int AuthorID { get; set; }
        [Required]
        [Display(Name = "Last Name")]
        public string LastName { get; set; }

        [Display(Name = "First Name")]
        public string FirstMidName { get; set; }

        public virtual ICollection<Book> Books { get; set; }
    }
}

My Scaffolded generated View for Books Create (Create.cshtml)

@model ContosoBooks.Models.Book

@{
    ViewData["Title"] = "Create";
}

<h2>Create</h2>

<form asp-action="Create">
    <div class="form-horizontal">
        <h4>Book</h4>
        <hr />
        <div asp-validation-summary="ValidationSummary.ModelOnly" class="text-danger"></div>
        <div class="form-group">
            <label asp-for="AuthorID" class="col-md-2 control-label"></label>
            <div class="col-md-10">
                <select asp-for="AuthorID" class ="form-control"></select>
            </div>
        </div>
        <div class="form-group">
            <label asp-for="Genre" class="col-md-2 control-label"></label>
            <div class="col-md-10">
                <input asp-for="Genre" class="form-control" />
                <span asp-validation-for="Genre" class="text-danger" />
            </div>
        </div>
        <div class="form-group">
            <label asp-for="Price" class="col-md-2 control-label"></label>
            <div class="col-md-10">
                <input asp-for="Price" class="form-control" />
                <span asp-validation-for="Price" class="text-danger" />
            </div>
        </div>
        <div class="form-group">
            <label asp-for="Title" class="col-md-2 control-label"></label>
            <div class="col-md-10">
                <input asp-for="Title" class="form-control" />
                <span asp-validation-for="Title" class="text-danger" />
            </div>
        </div>
        <div class="form-group">
            <label asp-for="Year" class="col-md-2 control-label"></label>
            <div class="col-md-10">
                <input asp-for="Year" class="form-control" />
                <span asp-validation-for="Year" class="text-danger" />
            </div>
        </div>
        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </div>
    </div>
</form>

<div>
    <a asp-action="Index">Back to List</a>
</div>

@section Scripts {
    <script src="~/lib/jquery/dist/jquery.min.js"></script>
    <script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
    <script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>
}

  [1]: http://docs.asp.net/en/latest/tutorials/your-first-aspnet-application.html
MichalObi
  • 133
  • 1
  • 1
  • 11

1 Answers1

0

On your create page it won't display the ID because it has no value and the application is anticipating the ID will be generated when the object is inserted into the database.

Falanor
  • 206
  • 1
  • 9