Как заменить текст Html .Raw на ASP. NET Идентификационные данные пользователя - PullRequest
0 голосов
/ 17 февраля 2020

Я пытаюсь заменить содержимое в своем теле сообщения, я использую WYSIWYG редактор. Я ввожу текст «Заполнитель» и пытаюсь заменить его на ASP. NET Идентификационные данные пользователя в моем контроллере.

У меня есть метод расширения для ASP. NET Идентификация:

public static string GetUserFirstName(this IIdentity identity)
{
    var db = ApplicationDbContext.Create();
    var user = db.Users.FirstOrDefault(u => u.UserName.Equals(identity.Name));

    return user != null ? user.FirstName : String.Empty;
}

Это мое действие создания в моем контроллере

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "Id,Image,TypeId,ModalName,Title,Description,Body,CreatedAt")] Document document, HttpPostedFileBase Image)
{
    if (ModelState.IsValid)
    {
        // set timestamp
        document.CreatedAt = DateTime.Now;

        if (!string.IsNullOrEmpty(document.Body))
        {
            document.Body.ToLower().Replace("Placeholder", User.Identity.Name);
        }

        //extract first three characters of the document title as the Id for the modal pop up
        document.ModalName = document.Title.Substring(0, 3);

        db.Documents.Add(document);
        db.SaveChanges();

        // redirect to index page
        return RedirectToAction("Index");
    }

    ViewBag.TypeId = new SelectList(db.DocumentTypes, "Id", "Type", document.TypeId);
    return View(document);
}

Это представление

<div class="modal fade" tabindex="-1" role="dialog" aria-labelledby="@item.Title" aria-hidden="true" id="@item.ModalName">
    <div class="modal-dialog modal-lg">
        <div class="modal-content">
            @Html.Raw(item.Body)
        </div>
    </div>
</div>

1 Ответ

0 голосов
/ 23 апреля 2020

Я добился этого, заменив текст значениями методов расширения идентификаторов в результате действия Index для контроллера.

document.Body = document.Body.ToString().Replace("BusinessName", User.Identity.GetBusinessName().ToString());
document.Body = document.Body.ToString().Replace("UserEmail", User.Identity.GetBusinessEmail().ToString());
document.Body = document.Body.ToString().Replace("UserAddress", User.Identity.GetUserAddress().ToString());
document.Body = document.Body.ToString().Replace("UserPhone", User.Identity.GetContactNumber().ToString());
...