首页 > 解决方案 > 如何从 cshtml 表单获取数据并使用 Razor Pages c# 将其写入 txt 文件

问题描述

我正在使用 c# 在 Razor Pages 中创建实时聊天网页。

我有一个包含 gui 的 cshtml 表单。

@page
@model Project.Pages.LiveChatModel
@{
    ViewData["Title"] = "LiveChat";
    Layout = "~/Pages/_LoggedIn.cshtml";
}
<div class="container">
    <h2>Live Chat</h2>
    <div id="enterName">
        Enter your name: <input type="text" id="name" />
        <button id="btnName">Save</button>
    </div>
    <div id="currentName">
        Your Name:
    </div>
    <div id="supportName">
        Support Name: Jeff
    </div>
    Chat History
    <div id="messages">

    </div>
    <div>
        <textarea id="message" name="Message" cols="100"></textarea> 
<button id="sendMessage">Send</button>
    </div>
</div>

我想要做的是使用 C# 模型从发送的文本区域中获取一个值,并将其写入项目文件夹中的文本文件。希望你能帮忙。谢谢

标签: c#htmlrazor

解决方案


这描述了步骤和流程,应该阐明过程并回答您的问题。

模型:

public class ChatModel
{
    public string Message{ get; set; }

看法:

@model ChatModel
@using (Html.BeginForm("SendMessage", "MessageController", FormMethod.Post}))
{
        @Html.TextAreaFor(model => model.Message)

控制器:

public class MessageController : Controller

    [HttpPost]
    public ActionResult SendMessage(ChatModel viewModel)
    {
var message = viewModel.Message;
// Code to save to file here

你有一个模型、一个控制器和一个视图。模型声明将用于绑定的变量。在视图中声明模型并设置此模型的属性,如上所示。它是双向绑定,这意味着您可以拥有最初来自服务器的值,并且这些值在您提交时也会返回到服务器。

示例:如果我将属性 Message 的值设置为“您好,这是初始值”。然后这将显示给客户端。现在,如果它是可编辑字段,用户可以更改该值,例如“这是我的消息”,当提交包含此元素的表单时,控制器应该具有类型的参数ChatModel......然后 ASP.Net 引擎将绑定从客户端到相应变量的值。

是的...您将在服务器上获得消息值,并且您可以坚持到任何您想要的、数据库、文件或进一步传输到另一个服务...


推荐阅读