Asp.net mvc DNN MVC模板-是否有关于如何开发模块的良好文档

Asp.net mvc DNN MVC模板-是否有关于如何开发模块的良好文档,asp.net-mvc,dotnetnuke-7,dotnetnuke-8,Asp.net Mvc,Dotnetnuke 7,Dotnetnuke 8,在过去的两天里,我一直在努力寻找关于如何使用MVC框架为DOTNETNUKE CMS构建模块的清晰且举例说明的文档 对于这样规模的CMS来说,首先向应用程序开发人员宣传他们支持MVC是非常不幸的,然后在如何构建(比如说一个非常简单的表单)方面几乎没有什么信息 这就是我现在所取得的成就。我正在尝试建立一个基本的联系我们表单: 设置控制器操作 // GET: FormEntry Index .. [ModuleAction(ControlKey = "Add", TitleKey = "AddIt

在过去的两天里,我一直在努力寻找关于如何使用MVC框架为DOTNETNUKE CMS构建模块的清晰且举例说明的文档

对于这样规模的CMS来说,首先向应用程序开发人员宣传他们支持MVC是非常不幸的,然后在如何构建(比如说一个非常简单的表单)方面几乎没有什么信息

这就是我现在所取得的成就。我正在尝试建立一个基本的联系我们表单:

  • 设置控制器操作

    // GET: FormEntry Index .. 
    [ModuleAction(ControlKey = "Add", TitleKey = "AddItem")]
    public ActionResult Index()
    {
        return View();
    }
    
    
    
    [HttpPost] // POST: 
    [ActionName("FormEntry")]
    
    public string Post(FormEntry formEntry)
    {
        try
        {
            if (ModelState.IsValid)
            {
                FormEntryManager.Instance.CreateItem(formEntry);
            }
            return "success";
        }
        catch(Exception ex)
        {
            return "error";
        }
    
    }
    
  • 设置一个视图

    <div id="Item-@Dnn.ModuleContext.ModuleId">
    
        <form id="formcontactus">
            @*@Html.ValidationSummary(true)*@
    
            <fieldset>
                <div class="dnnFormItem">
                    <div><label for="itemName">@Dnn.LocalizeString("lblName")</label></div>
                    @Html.TextBoxFor(m => m.VisitorName)
                    @Html.ValidationMessageFor(m => m.VisitorName, @Dnn.LocalizeString("VisitorNameRequired"))
                </div>
                <div class="dnnFormItem">
                    <div><label for="itemDescription">@Dnn.LocalizeString("lblVisitorEmail")</label></div>
                    @Html.TextBoxFor(m => m.VisitorEmail)
                    @Html.ValidationMessageFor(m => m.VisitorEmail, @Dnn.LocalizeString("VisitorEmailRequired"))
                </div>
                <div class="dnnFormItem">
                    <div><label for="itemDescription">@Dnn.LocalizeString("lblPhone")</label></div>
                    @Html.TextBoxFor(m => m.VisitorPhone)
                </div>
                <div class="dnnFormItem">
                    <div><label for="itemDescription">@Dnn.LocalizeString("lblMessage")</label></div>
                    @Html.TextAreaFor(m => m.VisitorMessage)
                    @Html.ValidationMessageFor(m => m.VisitorMessage, @Dnn.LocalizeString("VisitorMessageRequired"))
                </div>
    
                @Html.HiddenFor(m => m.ModuleId)
            </fieldset>
    
            <button id="btnSumbit" type="button" class="dnnPrimaryAction">@Dnn.LocalizeString("Submit")</button>
            <a id="cancelEdit" href="#" class="dnnSecondaryAction">@Dnn.LocalizeString("Cancel")</a>
        </form>
    
    </div>
    
    
    @*@Html.ValidationSummary(true)*@
    @Dnn.LocalizeString(“lblName”)
    @Html.TextBoxFor(m=>m.VisitorName)
    @Html.ValidationMessageFor(m=>m.VisitorName,@Dnn.LocalizeString(“VisitorNameRequired”))
    @Dnn.LocalizeString(“lblVisitorEmail”)
    @Html.TextBoxFor(m=>m.VisitorEmail)
    @Html.ValidationMessageFor(m=>m.VisitorEmail,@Dnn.LocalizeString(“VisitorEmailRequired”))
    @Dnn.本地化字符串(“lblPhone”)
    @Html.TextBoxFor(m=>m.VisitorPhone)
    @Dnn.本地化字符串(“LBL消息”)
    @Html.TextAreaFor(m=>m.VisitorMessage)
    @Html.ValidationMessageFor(m=>m.VisitorMessage,@Dnn.LocalizeString(“VisitorMessageRequired”))
    @Html.HiddenFor(m=>m.ModuleId)
    @Dnn.本地化字符串(“提交”)
    
  • 我的索引视图确实成功呈现,并且我可以看到我的表单。问题在于理解我将这些数据发布到MVC post方法的方式。此外,用于在模态类上进行验证的数据注释在客户端不起作用

    我尝试在Post方法上通过jQueryAjax发布,但这会引发一个内部错误


    期待DNN社区的消息。

    一个不错的DNN8 MVC模块示例项目是我的,您可以从github下载

    “我的编辑视图和控制器”具有可以签出的具有工作验证的表单字段

    确保单击submit按钮时,它正在输入您的控制器方法(我假设该视图根据您的操作方法称为FormEntry?)

    此外,处理post的操作方法应该返回操作结果,而不是字符串

    在我的post处理程序中,如果ModelState.IsValid为true,我将在持久化表单数据后返回RedirectToRouteResult,否则我将返回具有相同模型的当前视图,该模型将触发验证

    [HttpPost]
    [DotNetNuke.Web.Mvc.Framework.ActionFilters.ValidateAntiForgeryToken]
    public ActionResult Edit(MenuItem item)
    {
        if (ModelState.IsValid)
        {
            //Persist form information
    
            //Go to default view (Index)
            return RedirectToDefaultRoute();
        }
    
        // Return to my edit view if there was an error.
        return View(item);
    }
    

    MVC模块开发的官方文档是。您还可以找到博客、社区项目和DNNHero.com教程,这些内容涵盖了该主题。此外,我的答案中的示例MVC项目至少给出了一个工作示例。您对这些资源有进一步的了解吗?@DotNetNuclear:谢谢您的回复。这个周末我将继续工作。我的观点是,例如,我猜有一个.dnn文件用于路由,而不是RouteConfig.cs(与asp.net MVC相反)。这是怎么解释的?验证将如何在客户端和服务器端工作?如何将用于验证的模态类上的数据注释与客户端验证联系起来?。我是一名Android开发者+一名web开发者。我在其他框架中看到了非常成熟的文档,但在DNN中看不到