从过去的两天开始,我一直在努力寻找关于如何使用 DOTNETNUKE CMS 的 MVC 框架构建模块的清晰示例文档。
对于这种规模的 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>
我的索引视图确实成功呈现,并且我可以看到我的表单。问题在于理解我将这些数据发布到 MVC Post 方法的方式。此外,我的模态类验证数据注释在客户端也不起作用。
我尝试在 Post 方法上通过 jQuery Ajax 发布,但这会引发内部错误。
期待听到 DNN 社区的来信。