【发布时间】:2026-02-05 20:55:02
【问题描述】:
在我的应用程序的第一页中,我输入了个人的数据(姓名、电子邮件等),在第二页中,我选择了要给他一本书的人。当我在 DropDownListFor 中选择名称时,我需要在第二页中自动选择电子邮件。型号不一样!!!!!谢谢!
这里是第一页的控制器:
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MvcLib.Models;
using MvcLibraly.Models;
namespace MvcLibraly.Controllers
{
public class UsersController : Controller
{
private BookDBContext db = new BookDBContext();
//
// GET: /Users/
public ActionResult Index()
{
return View(db.Users.ToList());
}
//
// GET: /Users/Details/5
public ActionResult SearchIndex(string searchString)
{
var users = from m in db.Users
select m;
if (!String.IsNullOrEmpty(searchString))
{
users = users.Where(s => s.Name.Contains(searchString));
}
return View(users);
}
public ActionResult Details(int id = 0)
{
User user = db.Users.Find(id);
if (user == null)
{
return HttpNotFound();
}
return View(user);
}
//
// GET: /Users/Create
public ActionResult Create()
{
return View();
}
//
// POST: /Users/Create
[HttpPost]
public ActionResult Create(User user)
{
if (ModelState.IsValid)
{
db.Users.Add(user);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(user);
}
//
// GET: /Users/Edit/5
public ActionResult Edit(int id = 0)
{
User user = db.Users.Find(id);
if (user == null)
{
return HttpNotFound();
}
return View(user);
}
//
// POST: /Users/Edit/5
[HttpPost]
public ActionResult Edit(User user)
{
if (ModelState.IsValid)
{
db.Entry(user).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(user);
}
//
// GET: /Users/Delete/5
public ActionResult Delete(int id = 0)
{
User user = db.Users.Find(id);
if (user == null)
{
return HttpNotFound();
}
return View(user);
}
//
// POST: /Users/Delete/5
[HttpPost, ActionName("Delete")]
public ActionResult DeleteConfirmed(int id)
{
User user = db.Users.Find(id);
db.Users.Remove(user);
db.SaveChanges();
return RedirectToAction("Index");
}
protected override void Dispose(bool disposing)
{
db.Dispose();
base.Dispose(disposing);
}
}
}
这是第一页的视图:
@model MvcLib.Models.User
@{
ViewBag.Title = "Добавление читателя";
}
<h2>Добавление читателя</h2>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>User</legend>
@* <div class="editor-label">
Фамилия
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Surname)
@Html.ValidationMessageFor(model => model.Surname)*@
@*</div>*@
<div class="editor-label">
Ф.И.О.
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name, "Введены некорректные данные!")
</div>
@* <div class="editor-label">
Отчество
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Lastname)
@Html.ValidationMessageFor(model => model.Lastname)
</div>*@
<div class="editor-label">
Год рождения
</div>
<div class="editor-field">
@Html.EditorFor(model => model.BirthDate)
@Html.ValidationMessageFor(model => model.BirthDate, "Введены некорректные данные!")
</div>
<div class="editor-label">
Телефон
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Phone)
@Html.ValidationMessageFor(model => model.Phone, "Введены некорректные данные!")
</div>
<div class="editor-label">
E-mail
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Adress)
@Html.ValidationMessageFor(model => model.Adress, "Введены некорректные данные!")
</div>
<div class="editor-label">
Группа
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Group)
@Html.ValidationMessageFor(model => model.Group, "Введены некорректные данные!")
</div>
<p>
<input type="submit" value="Добавить" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Вернуться к списку читателей", "Index")
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
这里是第二页的控制器:
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MvcLibraly.Models;
using System.Web.Mvc.Html;
using System.Net.Mail;
using System.Net;
using System.Web.UI.WebControls;
using System.IO;
namespace MvcLibraly.Controllers
{
public class UchetController : Controller
{
private BookDBContext db = new BookDBContext();
//
// GET: /Uchet/ !!!!!!!!!!!!
public ActionResult Index()
{
return View(db.Uchets.ToList());
}
[HttpPost]
public ActionResult Index(Uchet uchet)
{
return View(uchet);
}
//
// GET: /Uchet/Details/5
//public ActionResult SearchIndex(string bookName, string searchString)
//{
//}
public ActionResult Details(int id = 0)
{
Uchet uchet = db.Uchets.Find(id);
if (uchet == null)
{
return HttpNotFound();
}
return View(uchet);
}
public ActionResult SearchIndex(string searchString)
{
var users = from m in db.Uchets
select m;
if (!String.IsNullOrEmpty(searchString))
{
users = users.Where(s => s.Name.Contains(searchString));
}
return View(users);
}
//
// GET: /Uchet/Create
public ActionResult Create(string userName, string nameTitle, string nameAdress)
{
var NameLst = new List<string>();
var NameQry = from b in db.Users
orderby b.Name
select b.Name;
NameLst.AddRange(NameQry.Distinct());
ViewBag.userName = new SelectList(NameLst);
var TitleLst = new List<string>();
var TitleQry = from r in db.Lib
orderby r.Title
select r.Title;
TitleLst.AddRange(TitleQry.Distinct());
ViewBag.nameTitle = new SelectList(TitleLst);
var AdressLst = new List<string>();
var AdressQry = from j in db.Users
orderby j.Name
select j.Adress;
AdressLst.AddRange(AdressQry.Distinct());
ViewBag.nameAdress = new SelectList(AdressLst);
return View();
}
//
// POST: /Uchet/Create
[HttpPost]
public ActionResult Create(Uchet uchet)
{
if (ModelState.IsValid)
{
db.Uchets.Add(uchet);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(uchet);
}
//
// GET: /Uchet/Edit/5
public ActionResult Edit(string userName, string nameTitle, string nameAdress, int id = 0)
{
var NameLst = new List<string>();
var NameQry = from b in db.Users
orderby b.Name
select b.Name;
NameLst.AddRange(NameQry.Distinct());
ViewBag.userName = new SelectList(NameLst);
var TitleLst = new List<string>();
var TitleQry = from r in db.Lib
orderby r.Title
select r.Title;
TitleLst.AddRange(TitleQry.Distinct());
ViewBag.nameTitle = new SelectList(TitleLst);
var AdressLst = new List<string>();
var AdressQry = from j in db.Users
orderby j.Name
select j.Adress;
AdressLst.AddRange(AdressQry.Distinct());
ViewBag.nameAdress = new SelectList(AdressLst);
Uchet uchet = db.Uchets.Find(id);
if (uchet == null)
{
return HttpNotFound();
}
return View(uchet);
}
//
// POST: /Uchet/Edit/5
[HttpPost]
public ActionResult Edit(Uchet uchet)
{
if (ModelState.IsValid)
{
db.Entry(uchet).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(uchet);
}
//
// GET: /Uchet/Delete/5
public ActionResult Delete(int id = 0)
{
Uchet uchet = db.Uchets.Find(id);
if (uchet == null)
{
return HttpNotFound();
}
return View(uchet);
}
//
// POST: /Uchet/Delete/5
[HttpPost, ActionName("Delete")]
public ActionResult DeleteConfirmed(int id)
{
Uchet uchet = db.Uchets.Find(id);
db.Uchets.Remove(uchet);
db.SaveChanges();
return RedirectToAction("Index");
}
protected override void Dispose(bool disposing)
{
db.Dispose();
base.Dispose(disposing);
}
}
}
这是第二页的视图:已更新!!!
@model MvcLibraly.Models.Uchet
@{
ViewBag.Title = "Выдача книги";
}
<h2>Выдача книги</h2>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Uchet</legend>
<div class="editor-label">
Выберите читателя:
</div>
<div class="editor-field">
@*@Html.DropDownList("userName", "Выберите читателя...", model.Name)*@
@Html.DropDownListFor(model => model.Name, (SelectList)ViewBag.userName, new { style = "width: 310px" })
@Html.ValidationMessageFor(model => model.Name, "Введены некорректные данные!")
</div>
<div class="editor-label">
Выберите адрес:
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.Adress, (SelectList)ViewBag.nameAdress, new { style = "width: 310px" })
@Html.ValidationMessageFor(model => model.Adress, "Введены некорректные данные!")
</div>
<div class="editor-label">
Выберите название книги:
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.Title, (SelectList)ViewBag.nameTitle, new { style = "width: 310px" })
@Html.ValidationMessageFor(model => model.Title, "Введены некорректные данные!")
</div>
<div class="editor-label">
Выберите дату выдачи книги:
</div>
<div class="editor-field">
@Html.EditorFor(model => model.DatePol)
@Html.ValidationMessageFor(model => model.DatePol, "Введены некорректные данные!")
</div>
<div class="editor-label">
Выберите дату возврата книги:
</div>
<div class="editor-field">
@Html.EditorFor(model => model.DateVoz)
@Html.ValidationMessageFor(model => model.DateVoz, "Введены некорректные данные!")
</div>
<p>
<input type="submit" value="Создать" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Назад", "Index")
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
【问题讨论】:
-
有什么尝试?你有错误吗?
-
@lnanikian 第二页中的电子邮件未选择自动...
-
同一个型号为什么要用两个控制器?如果您希望您的第二封电子邮件是自动的,您需要传递选定的值。当您从第一页中选择时,您有一个值,然后将此值传递给创建 dropDown selectList 的操作,然后默认将其用于所选值。检查 SelectList() 的重载:
-
@lnanikian 哦,对不起,我忘了说它们是不同的模型......
-
我只在您的第二个视图中看到编辑器。我没有看到电子邮件下拉列表。
标签: asp.net-mvc asp.net-mvc-4 html.dropdownlistfor