【问题标题】:Can I use TinyMce in Asp.Net MVC 5 with regular HTML?我可以在带有常规 HTML 的 Asp.Net MVC 5 中使用 TinyMce 吗?
【发布时间】:2016-09-14 04:03:23
【问题描述】:

我在我的视图包中谈论的代码是这样的

    <div class="form-group">
        <label class="control-label col-md-2">Message</label>
        <div class="col-md-10">
            <input type="text" name="PostBody" placeholder="PostBody" class="form-control" />
        </div>
    </div>

这就像使用 FormCollection 使 Create 与带有 ActionResult 的两个表一起工作。

编辑:我们通常会在视图包中使用 TinyMce,并在视图包之后将脚本集成在顶部,如下所示: src="~/Scripts/tinymce/tinymce.min.js"

然后复制它脚本中的一些代码以使其工作。

然后在项目生成的默认代码中 在我们要添加 Tiny MCE 的地方,我们替换默认值 @Html.EditorFor 来自 @Html.TextAreaFor
结果是这样的。

<div class="form-group">
        @Html.LabelFor(model => model.Description, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.TextAreaFor(model => model.Description, new { htmlAttributes = new { @class = "form-control" } })
            @Html.ValidationMessageFor(model => model.Description, "", new { @class = "text-danger" })
        </div>
    </div> 

我们还在我们想要的行之前添加类:[AllowHtml]

但是他们在课堂上教我的方式似乎不适用于我使用 FormCollection 的控制器中的 ActionResult。

因此,如果我可以将第二个代码与 FormCollection 一起使用(除非有办法而且我只是不知道)如果可以的话,我应该如何将 Tiny MCE 添加到第一个示例的代码中。

编辑:我之前也应该提到这一点,但我使用的是 EntityFramwork 6 和 Authentification ,但没有使用 Async Controller 操作。

我有点困惑,我在谷歌上搜索并尝试了很多。 也许这里有人可以帮助我。

【问题讨论】:

  • 答案是,当然你可以将 TinyMce 与 MVC 5 一起使用。TinyMce 在客户端运行,MVC 在服务器上运行。但是您需要为您的问题添加一些细节,因为无法判断您卡在哪里。
  • 在深入研究之前,您似乎需要更多地研究 MVC 概念
  • 是的,我很抱歉,我的班级在这个主题上有点匆忙并且不清楚。我们知道控制器、模型和视图的作用以及其中的一些编码以及如何使用 Linq 和 Lambda,但仅此而已。对于我们的大部分问题,我们从老师那里得到的最好建议是谷歌……这对于特定的事情来说并不是一件坏事。但是我之前提到的其他概念以及如何编码都严重缺乏。我编辑了我的回复,也许这次它提供了足够的细节
  • [AllowHtml] 应用于模型中的属性,但如果您使用 FormCollection (可怕的做法,不应该使用),那么您没有绑定到您的模型,因此该属性被忽略。将FormCollection 替换为您在视图中使用的模型。
  • - Stephen Muecke 我明白了,你能给我推荐一篇关于如何同时使用 2 个表进行创建的好帖子或教程吗?那真的很有帮助。

标签: html asp.net asp.net-mvc tinymce


【解决方案1】:

首先,我将展示我的整个 ActionResult 部分。

    [HttpPost]
    [ValidateAntiForgeryToken]
    [ValidateInput(false)]
    public ActionResult Create(FormCollection collection) 
    {

        string PostBody = collection["PostBody"];
        string SujetTitle = collection["SujetTitle"];   
        int CategoryID_FK = (int)Session["catid"];

        Sujet j = new Sujet()
        {
            SujetTitle = SujetTitle,
            CategoryID_FK = CategoryID_FK,
            PostBody = PostBody,
            SujetDateCreation = DateTime.Now
        };

        db.Sujets.Add(j);
        db.SaveChanges();
        db.Posts.Add(new Post() { SujetID_FK = j.SujetID, PostBody = PostBody });
        db.SaveChanges();
        ViewBag.CategoryID_FK = new SelectList(db.Categories, "CategoryID", "CategoryTitle", j.CategoryID_FK);
        return RedirectToAction("Index", "Categories");

    }

所以为了完成这项工作,如果我的 EF-DataBase 我想要的另一张桌子的部分就像这样

    [AllowHtml]
    public string PostBody { get; set; }

我使用的模型是默认的 如果我想在我的创建视图中使用剃刀 我需要它像这样出现在模型中

   @Html.TextAreaFor(model => model.PostBody, new { htmlAttributes = new { @class = "form-control" } })

现在回到我的控制器,现在我添加了 PostBody { get;放;在我的课堂上我可以做这部分,现在我也可以添加 PostBody。

  Sujet j = new Sujet()
    {
        SujetTitle = SujetTitle,
        CategoryID_FK = CategoryID_FK,
        PostBody = PostBody,
        SujetDateCreation = DateTime.Now
    };

现在我们说类中 PostBody 的实际值等于集合中 PostBody 的值,该集合中存储了他在视图中获得的值,现在这些值可以通过两个表和我们可以将 Razor 与

一起使用
@Html.TextAreaFor

因此,从现在开始,您可以像往常一样添加 TinyMCE。

但是还有最后一个问题,如果我们去检查我需要添加的第一个代码示例,我将无法工作

[ValidateInput(false)]

现在它可以工作了!

现在我想对这种情况发表评论。 这是我班上的作业。和 [ValidateInput(false)] 老师是如何决定以这种方式教给我们的,以弥补是错误地学习我们使用 FormCollection 同时使用两个表进行创建而忘记了他要求我们在这项工作中添加 TinyMCE 的事实.

所以我真的不认为它真的毫无价值,但无论如何它都在这里。 如果您知道有关此主题的一些教程或更多,请随时与我分享。我总是愿意学习更多并变得更好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-24
    • 1970-01-01
    • 1970-01-01
    • 2017-05-14
    • 2020-01-28
    • 1970-01-01
    • 1970-01-01
    • 2017-02-02
    相关资源
    最近更新 更多