【问题标题】:Issue with Umbraco SurfaceController ModelUmbraco SurfaceController 模型的问题
【发布时间】:2019-01-30 16:28:49
【问题描述】:

我收到以下错误

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 传递给它...

【问题讨论】:

  • 如果将适当的模型传递给 .RenderPartial 方法会发生什么?
  • "当仅使用局部视图的名称调用 Html.RenderPartial() 时,ASP.NET MVC 会将调用视图模板使用的相同模型和 ViewData 字典对象传递给局部视图。 "
  • 我是否将类型或对象传递给方法?
  • 太好了,我刚刚将 ContactModel2 I 的新 I 立场传递给 RenderPartial 方法,现在它可以工作了!希望我可以将 cmets 标记为正确答案...
  • 我已经正确回答了,您可以将其标记为正确答案。很高兴我能帮上忙。

标签: .net umbraco umbraco7


【解决方案1】:

我认为您需要将适当的模型传递给 .RenderPartial() 方法。

来自文档:

"当 Html.RenderPartial() 仅使用部分名称调用时 视图,ASP.NET MVC 将传递给局部视图相同的模型和 调用视图模板使用的 ViewData 字典对象。"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多