c# - ASP.NET MVC 连接名称并映射到 ID#

标签 c# asp.net asp.net-mvc linq

我有一张存储人物的表。这些属性是 FirstNameLastNamePersonID。我已经添加了属性

public string NameFull { get { return FirstName + " " + LastName; } } 

而且我能够将输出显示为串联名称。

但是,当用户选择姓名时,我想将其存储为 PersonID。

目前,我将此作为我的 linq Where 语句:

var personID= db.Persons
         .Where(h => Names == model.Person.NameFull)
         .Select(h => h.PersonID);
var idToSave = personID.AsEnumerable().FirstOrDefault().Trim().ToString();

在 Controller 中:

SelectList names = new SelectList(db.Person.ToArray(), "PersonID", "NameFull");
ViewBag.Names = names;

谁能给我指出正确的方向?

最佳答案

如果我的理解正确,那么您希望在下拉列表中显示名字和姓氏,并且当用户选择姓名组合时,必须改用该人的 ID?如果是这样,那么下面的代码是基于我上面的假设。

我已经创建了必要的类,就像我应该做的那样。如果我遗漏了什么,请原谅,下面的代码没有经过测试。

您的 Person 类将如下所示:

public class Person
{
     public int Id { get; set; }

     public string FirstName { get; set; }

     public string LastName { get; set; }

     public string FullName
     {
          get
          {
               return FirstName + " " + LastName;
          }
     }
}

我已经很久没有使用 Entity Framework 了,不确定它是否会提示 FullName 不是 persons 表中的列名。

创建一个您将传递到 View 中的 PersonViewModel 类。

public class PersonViewModel
{
     public PersonViewModel()
     {
          Persons = new List<Person>();
     }

     public int PersonId { get; set; }

     public List<Person> Persons { get; set; }
}

在你的 Controller 中你会有这样的东西:

public ActionResult Create()
{
     PersonViewModel model = new PersonViewModel();

     // Get a list of all the people
     // I can't remember how to use Entity Framework to get a list of all the people,
     // it's something like the code below
     model.Persons = db.Persons;

     return View(model);
}

您的帖子操作方法:

[HttpPost]
public ActionResult Create(PersonViewModel model)
{
     // Do whatever you need to do
}

在您看来,代码将如下所示:

@Html.DropDownListFor(
     x => x.PersonId,
     new SelectList(Model.Persons, "Id", "FullName", Model.PersonId),
     "-- Select --"
)

上面的代码应该在下拉列表的“文本”部分显示名字和姓氏,并在下拉列表的值中显示人员的 ID。

希望你来对了:)

关于c# - ASP.NET MVC 连接名称并映射到 ID#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31038378/

相关文章:

ASP.NET 文件上传进度条

c# - c#属性的多态性

asp.net - 定期向用户发送电子邮件以更新密码

c# - 将用户名/密码传递给 SmtpClient (.NET) 的正确方法

java - 从 C# 到 JAVA 的 3DES 加密

c# - 如何清除 GridView 中的数据?

c# - 执行 Parallel.For 从 Array 计算数据的正确方法

javascript - 母版页和内容页上的多个 ScriptManager

ruby-on-rails - 像Devise for Rails这样的ASP.Net MVC的身份验证引擎?

asp.net-mvc - 多个 DateTime 参数的属性路由