Мой вид не видят модель представления и выдает ошибку - PullRequest
0 голосов
/ 09 мая 2018

Мое представление не видит модель представления и задает Дерево выражений может не содержать динамическую операцию. Когда я искал эту ошибку, большинство людей не использовали @model xxx в представлении. Но я использовал это

Это моя страница контроллера пользователя

 public class UserController : Controller
    {
        private readonly DbManager _context;

        public UserController(DbManager context)
        {
            _context = context;
        }
        [HttpGet]
        public IActionResult Kayit()
        {
            UserViewModel vm = new UserViewModel();
            return View(vm);
        }

        [HttpPost]
        public async Task<IActionResult> KayitAsync([Bind("Isim,Soyad,DogumTarihi,KullaniciAdi,Sifre")]Kullanici k)
        {
            if (ModelState.IsValid)
            {
                _context.Kullanicilar.Add(k);
                await _context.SaveChangesAsync();
                return View("thanks");
            }
            return View("Index");
        }
    }

Это мой пользователь / Kayit View

@Model ArtSite.ViewModels.UserViewModel

<h2>Kayıt Sayfası</h2>

<div class="row">
    <div class="col-md-4">
        <form asp-controller="User" asp-action="Kayit" method="post">
            <div asp-validation-summary="All"></div>

            <div>
                <label asp-for="Isim"></label>
                <input asp-for="Isim" />
                <span asp-validation-for="Isim"></span>
            </div>
            <div>
                <label asp-for="Soyad"></label>
                <input asp-for="Soyad" />
                <span asp-validation-for="Soyad"></span>
            </div>
            <div>
                <label asp-for="DogumTarihi"></label>
                <input type="date" asp-for="DogumTarihi" />
                <span asp-validation-for="DogumTarihi"></span>
            </div>

            <div>
                <label asp-for="KullaniciAdi"></label>
                <input asp-for="KullaniciAdi" />
                <span asp-validation-for="KullaniciAdi"></span>
            </div>
            <div>
                <label asp-for="Sifre"></label>
                <input type="password" asp-for="Sifre" />
                <span asp-validation-for="Sifre"></span>
            </div>
            <div>
                <label asp-for="ConfirmSifre"></label>
                <input type="password" asp-for="ConfirmSifre" />
                <span asp-validation-for="ConfirmSifre"></span>
            </div>
            <div><input type="submit" value="Kayıt Ol" /></div>
        </form>
    </div>
</div>

И это модель представления, которую я использовал для представления

 namespace ArtSite.ViewModels
{
    public class UserViewModel
    {
        [Required]
        public string Isim { get; set; }
        [Required]
        public string Soyad { get; set; }
        [Required,DataType(DataType.Date),Display(Name = "Doğum Tarihi")]
        public DateTime DogumTarihi { get; set; }
        [Required,MinLength(6),MaxLength(30),Display(Name ="Kullanıcı Adı")]
        public string KullaniciAdi { get; set; }
        [Required,DataType(DataType.Password), MinLength(6), MaxLength(30)]
        [Display(Name ="Şifre")]
        public string Sifre { get; set; }
        [Required, DataType(DataType.Password), MinLength(6), MaxLength(30)]
        [Compare("Password",ErrorMessage ="Şifreniz Uyuşmadı."),Display(Name ="Şifreyi Onayla")]
        public string ConfirmSifre { get; set; }
    }
}

Так что, пожалуйста, помогите мне понять это.

1 Ответ

0 голосов
/ 09 мая 2018

Вы путаете между свойством @Model и директивой @model, так как они разные и имеют разное назначение. Вам нужно поставить @model, чтобы определить модель для просмотра.

@model ArtSite.ViewModels.UserViewModel

Также обратитесь к этому сообщению (Модель верхнего регистра mvc против модели нижнего регистра ) для более подробного понимания.

...