C # предварительное заполнение текстовой области из базы данных - PullRequest
0 голосов
/ 21 марта 2012

У меня есть небольшой сайт с домашней страницей, на которой отображается 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);
        }


    }
}

1 Ответ

1 голос
/ 22 марта 2012

Вам просто нужно обновить метод Update, чтобы включить передачу в Id

//
// GET: /Data/Update/5

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

Кроме того, ссылка на метод обновления также должна быть обновлена ​​для передачи этого идентификатора. Предполагая, что вы используете стандартный шаблон списка для MVC.

<td>
    @Html.ActionLink("Update", "Update") |
    ...
</td>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...