@model IEnumerable<DevExtreme.NETCore.Demos.Models.EmployeeMention>
@section ExternalDependencies {
<script src="https://unpkg.com/devextreme-quill@21_2/dist/dx-quill.min.js"></script>
}
<div id="chat-window">
<div class="message dx-theme-background-color">
<div class="photo">
<img alt="Kevin Carter" src="../../images/mentions/Kevin-Carter.png" />
</div>
<div class="name">
Kevin Carter
</div>
<div class="date">
07/03/19 - 12:22AM
</div>
<div class="text">
<span class="dx-mention" spellcheck="false"><span><span>@@</span>John Heart</span></span> What experience do you have in this field?
</div>
</div>
<br />
<div class="message dx-theme-background-color">
<div class="photo">
<img alt="John Heart" src="../../images/mentions/John-Heart.png" />
</div>
<div class="name">
John Heart
</div>
<div class="date">
07/03/19 - 12:25AM
</div>
<div class="text">
I've been in the audio/video industry since 2001, and I've been the CEO of DevAv since 2009.
</div>
</div>
<br />
<div class="message dx-theme-background-color">
<div class="photo">
<img alt="Kevin Carter" src="../../images/mentions/Kevin-Carter.png" />
</div>
<div class="name">
Kevin Carter
</div>
<div class="date">
07/03/19 - 12:26AM
</div>
<div class="text">
That's very interesting. <span class="dx-mention" spellcheck="false"><span><span>@@</span>Olivia Peyton</span></span>, what do you think?
</div>
</div>
</div>
@(Html.DevExtreme().HtmlEditor()
.ID("html-editor")
.Mentions(m => {
m.Add().DataSource(Model).SearchExpr("text").DisplayExpr("text").ValueExpr("text");
})
.Content(@<text>
<p>
<span class="dx-mention" spellcheck="false" data-marker="@@" data-mention-value="Kevin Carter"><span><span>@@</span>Kevin Carter</span></span> I think John's expertise can be very valuable in our startup.
</p>
</text>)
)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using DevExtreme.NETCore.Demos.Models.SampleData;
namespace DevExtreme.NETCore.Demos.Controllers {
public class HtmlEditorController : Controller {
public IActionResult Mentions() {
return View(SampleData.EmployeeMentions);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
namespace DevExtreme.NETCore.Demos.Models {
public class EmployeeMention {
public int id { get; set; }
public string text { get; set; }
public string team { get; set; }
public string icon { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Linq;
namespace DevExtreme.NETCore.Demos.Models.SampleData {
public partial class SampleData {
public static readonly IEnumerable<EmployeeMention> EmployeeMentions = new[] {
new EmployeeMention {
id = 1,
text = "John Heart",
team = "Engineering",
icon = "../../images/mentions/John-Heart.png"
},
new EmployeeMention {
id = 2,
text = "Kevin Carter",
team = "Engineering",
icon = "../../images/mentions/Kevin-Carter.png"
},
new EmployeeMention {
id = 3,
text = "Olivia Peyton",
team = "Management",
icon = "../../images/mentions/Olivia-Peyton.png"
},
new EmployeeMention {
id = 4,
text = "Robert Reagan",
team = "Management",
icon = "../../images/mentions/Robert-Reagan.png"
},
new EmployeeMention {
id = 5,
text = "Cynthia Stanwick",
team = "Engineering",
icon = "../../images/mentions/Cynthia-Stanwick.png"
},
new EmployeeMention {
id = 6,
text = "Brett Wade",
team = "Analysis",
icon = "../../images/mentions/Brett-Wade.png"
},
new EmployeeMention {
id = 7,
text = "Greta Sims",
team = "QA",
icon = "../../images/mentions/Greta-Sims.png"
}
};
}
}
#chat-window {
background-color: rgba(191, 191, 191, 0.15);
height: 350px;
padding: 10px;
}
.dx-htmleditor {
height: 100px;
}
#send {
float: right;
margin: 10px 0px;
}
.message {
height: 85px;
background-color: inherit;
display: inline-block;
max-width: 60%;
border-radius: 5px;
margin: 5px;
padding: 10px;
box-shadow: 0px 2px 6px rgba(0, 0, 0, 0.1);
}
.name {
font-weight: bold;
}
.date {
opacity: 0.5;
}
.photo {
float: left;
height: 100%;
}
.photo > img {
width: 40px;
height: 40px;
display: block;
border-radius: 40px;
margin-right: 10px;
}