Проблема с моделью Umbraco SurfaceController - PullRequest
0 голосов
/ 30 января 2019

Я получаю следующую ошибку

System.InvalidOperationException: 'Элемент модели, переданный в словарь, имеет тип' Umbraco.Web.Models.RenderModel ', но для этого словаря требуется элемент модели типа'NewSite.Models.ContactModel2 '.'

Мой шаблон выглядит следующим образом

@using NewSite.Models
@{
    Layout = "Master.cshtml";
    Html.RenderPartial("~/Views/Contact/Contact.cshtml");
}

Мой контроллер выглядит следующим образом

using NewSite.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Umbraco.Web.Models;
using Umbraco.Web.Mvc;

namespace NewSite.Controllers
{
    public class ContactController : SurfaceController
    {
        // GET: Contact
        [HttpGet]
        public ActionResult Index()
        {
            ContactModel2 cmodel = new ContactModel2();
            cmodel.Email = "ddddddaaaaa";
            return PartialView("ContactPartial",cmodel);
        }

        [HttpPost]
        public ActionResult HandleContact(ContactModel2 model)
        {
            if(!ModelState.IsValid)
            {
                return CurrentUmbracoPage();
            }
            ContactModel2 m = new ContactModel2();
            return RedirectToCurrentUmbracoPage();

        }


    }
}

Мой частичный вид выглядит следующим образом

@model NewSite.Models.ContactModel2

@using (Html.BeginUmbracoForm("HandleContact", "Contact"))
{
    @Html.TextBoxFor(model => model.Email);
    <button name="BtnSubmit" type="submit">Submit</button>
}

Моя модель выглядит следующим образом

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Umbraco.Web.Models;

namespace NewSite.Models
{
    public class ContactModel2
    {
        public string Email { get; set; }
    }
}

Я понятия не имею, почему он думает, что я пытаюсь передать ему RenderModel ...

1 Ответ

0 голосов
/ 31 января 2019

Я думаю, вам нужно передать соответствующую модель в метод .RenderPartial ().

Из документации:

"Когда Html.RenderPartial () вызывается только симя частичного представления ASP.NET MVC передаст частичному представлению те же объекты словаря Model и ViewData, которые используются шаблоном вызывающего представления. "

...