加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 自定义表面控制器Umbraco问题

发布时间:2020-12-15 22:29:16 所属栏目:百科 来源:网络整理
导读:首先,我想澄清一点,我只是在学习ASP MVC和Umbraco :).可能有非常新手的错误. 我正在努力建立一个采访系统.在互联网上搜索,我找到了一个改变口味的例子. 我创建了一个用于测试的空项目,这就是我所拥有的. Umbraco管理员 DocumentTypes Answer // -- Without t
首先,我想澄清一点,我只是在学习ASP MVC和Umbraco :).可能有非常新手的错误.
我正在努力建立一个采访系统.在互联网上搜索,我找到了一个改变口味的例子.
我创建了一个用于测试的空项目,这就是我所拥有的.

Umbraco管理员

DocumentTypes 
    Answer  // -->  Without template (for the moment) - No have properties (for the moment)
    Poll    // -->  Without template (for the moment) - No have properties (for the moment) - Have many "Answer" child and "Active" bool property
    Polls   // -->  Without template (for the moment) - No have properties (for the moment) - Have many "Poll" child 

PartialView
    Polls

Umbraco的内容

enter image description here

在Visual Studio中

Umbraco CMS (NuGet)

Controllers
    PollController

Models
    PollViewModel
    Answer

SurfaceController

namespace Polls.Controllers
{
    public class PollsController : SurfaceController
    {

        [HttpPost]
        public ActionResult Submit(PollViewModel model)
        {

            // Do something...

            return RedirectToCurrentUmbracoPage();
        }

        public ActionResult Index()
        {
            var testPage = Umbraco.Content(CurrentPage.Id);
            var questions = new List<PollViewModel>();

            foreach (var currentPoll in testPage.Where("Active"))
            {
                questions.Add(new PollViewModel { ID = currentPoll.ID,Title = currentPoll.Name.ToString(),Answers = AnswerList(currentPoll.ID) });
            }

            return PartialView("~/Views/Polls.cshtml",questions);
        }

        private List<Answer> AnswerList(int myQuestionID)
        {
            var questionPage = Umbraco.Content(myQuestionID);
            var answers = new List<Answer>();

            foreach (var currentAnswer in questionPage.Children)
            {
                answers.Add(new Answer { ID = currentAnswer.ID,Text = currentAnswer.Name.ToString() });
            }

            return answers;
        }

    }
}

模型

namespace Polls.Models
{
    public class Answer
    {
        public int ID { get; set; }
        public string Text { get; set; } // --> No use for now
    }
}

namespace Polls.Models
{
    public class PollViewModel
    {
        public int ID { get; set; }
        public string Title { get; set; } // --> No use for now
        public List<Answer> Answers { get; set; }

    }
}

PartialView“民意调查”

@model IEnumerable<Polls.Models.PollViewModel>

<div>
    @using (Html.BeginUmbracoForm<Polls.Controllers.PollsController>("Submit"))
    {

        foreach (var item in Model)
        {
            <div>
                @Html.Hidden(item.ID.ToString())
                <p>
                    <strong>@item.Title</strong>
                </p>
                @{
            foreach (var answerItem in item.Answers)
            {
                <div>
                    @Html.RadioButton(item.Title,answerItem.ID,new { @id = answerItem.ID })
                    @Html.Label(answerItem.Text,new { @for = answerItem.ID })
                </div>
            }
                }
            </div>
        }

        <div>
            <button type="submit">Send...</button>
        </div>

    }
</div>

错误

enter image description here

编辑

新问题

enter image description here

解决方法

从您的错误您获得与Polls名称空间和Umbraco.Web.PublishedContentModels.Polls名称空间的名称空间冲突.您可以更改名称空间以匹配Umbraco(不推荐),也可以尝试将名称空间更改为与Umbraco名称空间不冲突的唯一名称空间.

类似于:MyRootNamespace.Polls,您将使用自己的自定义命名空间替换MyRootNamespace.

SurfaceController

namespace MyRootNamespace.Polls.Controllers {
    public class PollsController : SurfaceController {...}
}

楷模

namespace MyRootNamespace.Polls.Models {
    public class Answer {...}

    public class PollViewModel {...}
}

PartialView“民意调查”

@model IEnumerable<MyRootNamespace.Polls.Models.PollViewModel>

<div>
    ...
</div>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读