gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 04:41:16 25 4
gpt4 key购买 nike

过去 2 天以来,我一直在努力寻找有关如何使用 DOTNETNUKE CMS 的 MVC 框架构建模块的清晰且示例性的文档。

对于这种规模的 CMS 来说,首先向应用程序开发人员宣传他们支持 MVC,然后就如何构建一个非常简单的表单开始提供几乎可以忽略不计的信息,这是非常不幸的。

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

  1. 设置 Controller 操作

    // 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";
    }

    }
  2. 设置 View 。

    <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>

我的索引 View 确实已成功渲染,并且我可以看到我的表单。问题在于理解我将此数据发布到 MVC Post 方法的方式。另外,我的模态类验证数据注释在客户端不起作用。

我尝试通过 jQuery Ajax 在 Post 方法上进行发布,但这会引发内部错误。

期待收到 DNN 社区的来信。

最佳答案

一个很好的DNN8 MVC模块示例项目是我的Restaurant Menu MVC project您可以从 github 下载。

我的编辑 View 和 Controller 具有带有工作验证的表单字段,您可以查看。

确保单击提交按钮时,它会进入您的 Controller 方法(我假设该 View 根据您的操作方法称为 FormEntry?)。

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

在我的帖子处理程序中,如果 ModelState.IsValid 为 true,则在保存表单数据后返回 RedirectToRouteResult,否则我将返回具有相同模型的当前 View ,这将触发验证。

[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);
}

关于asp.net-mvc - DNN MVC 模板 - 是否有关于如何开发模块的良好文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37124058/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com