У меня есть небольшой сайт с домашней страницей, на которой отображается x2 абзаца текста. Эти абзацы заполняются из одной записи в базе данных, содержащей 3 поля («ID», «para1» и «para2»). Эта запись обновляется с помощью формы, содержащей текстовые области x2 (назначенные для обновления «para1» и «para2»), что позволяет мне вводить текстовые области, нажимать кнопку «обновить», и затем два абзаца на домашней странице обновляются, чтобы отразить новые текст.
Чтобы перейти на страницу формы, которая содержит текстовые области с домашней страницы, я нажимаю ссылку «admin», которая переводит меня на страницу входа, я ввожу имя пользователя и пароль и нажимаю «login», и это перенаправляет меня на «update» "страница.
Мне бы хотелось, чтобы входные данные x2 textarea были предварительно заполнены данными, хранящимися в полях «para1» и «para2» в таблице базы данных. Таким образом, если кто-то захочет внести небольшое изменение в один из абзацев на домашней странице, ему не нужно будет заново вводить текст целиком с нуля.
Я использую C # Razor в Microsoft Visual Web Developer Express. Я абсолютный новичок не только в этой, но и в любой другой форме разработки, поэтому я учусь по ходу дела, пожалуйста, будьте осторожны: -)
Примеры кода ниже:
(Просмотр страницы):
@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);
}
}
}