C#正在从数据库中预填充文本区域

本文关键字:填充 文本 区域 数据库 | 更新日期: 2023-09-27 18:28:36

我有一个小网站,它有一个显示x2段文本的主页。这些段落是从包含3个字段("ID"、"para1"answers"para2")的数据库中的单个记录中填充的。此记录通过一个包含x2个文本区域的表单进行更新(指定用于更新"para1"answers"para2"),允许我在文本区域中键入,单击"更新",然后主页上的两个段落将更新以反映新文本。

要从主页导航到包含文本区域的表单页面,我单击"管理员"链接,进入登录页面,输入用户名和密码,然后单击"登录",然后转到"更新"页面。

我想要的是用数据库表中"para1"answers"para2"字段中存储的数据预先填充x2文本区域输入。这样,如果有人想对主页上的任何一段进行小的编辑,那么他们就不需要从头开始重新键入整个内容。

我在MicrosoftVisualWebDeveloperExpress中使用C#Razor。我不仅是这方面的初学者,而且是任何形式的开发工作的初学者,所以我在学习的过程中,请温和一点:-)

以下代码示例:


(查看页面):

@model DFAccountancy.Models.Data
@{
    ViewBag.Title = "Update";
}
<h2>Update</h2>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript">            </script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"     type="text/javascript"></script>
@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)
    <fieldset>
        <legend>Data</legend>
        <div class="editor-label">
            @Html.LabelFor(model => model.para1)
        </div>
        <div class="editor-field">
            @Html.TextAreaFor(model => model.para1, new { cols = 75, @rows = 5 })
            @*@Html.EditorFor(model => model.para1)*@
            @Html.ValidationMessageFor(model => model.para1)
        </div>
        <div class="editor-label">
            @Html.LabelFor(model => model.para2)
        </div>
        <div class="editor-field">
            @Html.TextAreaFor(model => model.para2, new { cols = 75, @rows = 5 })
            @*@Html.EditorFor(model => model.para2)*@
            @Html.ValidationMessageFor(model => model.para2)
        </div>
        <p>
            <input type="submit" value="Update" />
        </p>
    </fieldset>
}
<div>
    @Html.ActionLink("Back to List", "Index")
</div>

(模型):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
using System.ComponentModel.DataAnnotations;
namespace DFAccountancy.Models
{
    public class Data
    {
        [DataType(DataType.MultilineText)]
        public int ID { get; set; }
        public string para1 { get; set; }
        public string para2 { get; set; }
    }
    public class DataDBContext : DbContext
    {
        public DbSet<Data> Data { get; set; }
    }
}

(控制人):

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using DFAccountancy.Models;
namespace DFAccountancy.Controllers
{ 
    public class DataController : Controller
    {
        private DataDBContext db = new DataDBContext();
        //
        // GET: /Data/
        public ViewResult Index()
        {
            return View(db.Data.ToList());
        }
        //
        // GET: /Data/Details/5
        public ViewResult Details(string id)
        {
            Data data = db.Data.Find(id);
            return View(data);
        }
        //
        // GET: /Data/Update/5
        public ActionResult Update()
        {
            return View();
        } 
        //
        // POST: /Data/Update/5
        [HttpPost]
        public ActionResult Update(Data data)
        {
            if (ModelState.IsValid)
            {
                data.ID = 1; //EF need to know which row to update in the database.
                db.Entry(data).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("Index", "Home");
            }
            return View(data);
        }

    }
}

C#正在从数据库中预填充文本区域

您只需要更新Update方法,以包括传入Id

//
// GET: /Data/Update/5
public ActionResult Update()
{
    Data data = db.Data.Find("1");
    return View(data);
}

此外,更新方法的链接也需要更新才能传递该Id。假设您使用的是MVC的标准列表模板。

<td>
    @Html.ActionLink("Update", "Update") |
    ...
</td>