【问题标题】:instead of id use firstname+lastname+email in select list asp.net mvc而不是 id 在选择列表 asp.net mvc 中使用名字+姓氏+电子邮件
【发布时间】:2015-12-05 14:36:12
【问题描述】:

我有两个字段的反馈表:合作伙伴的项目名称和姓氏。第一个字段是正确的(项目名称),但是我想要第二个字段的姓氏,名字+姓氏+电子邮件,怎么做?目前只有姓氏,但我可以为不同的合作伙伴提供多个姓氏。以下是我如何创建此表单的代码示例。

在我的feedbackController的create方法中:

  ViewBag.project_id = new SelectList(db.Projects.Where(p => p.project_id == project_id), "project_id", "name");
  ViewBag.Id = new SelectList(db.Users_projects.Where(p => p.project_id == project_id && p.project_role == "partner").Select(up => new { up.AspNetUsers.FirstName,up.AspNetUsers.LastName, up.AspNetUsers.Id }), "Id", "LastName");

这是我对如何呈现此表单的看法:

<div class="form-horizontal">
    <h4></h4>
    <hr />
    @Html.ValidationSummary(true, "", new { @class = "text-danger" })
    <div class="form-group">
        @Html.LabelFor(model => model.project_id, "Project: ", htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.DropDownList("project_id", null, htmlAttributes: new { @class = "form-control" })
            @Html.ValidationMessageFor(model => model.project_id, "", new { @class = "text-danger" })
        </div>
    </div>

    <div class="form-group">
        @Html.LabelFor(model => model.Id, " For partner : ", htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.DropDownList("Id", null, htmlAttributes: new { @class = "form-control" })
            @Html.ValidationMessageFor(model => model.Id, "", new { @class = "text-danger" })
        </div>
    </div>

    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <input type="submit" value="Create" class="btn btn-default" />
        </div>
    </div>
</div>

【问题讨论】:

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


    【解决方案1】:
    ViewBag.Id =db.Users_projects
       .Where(p => p.project_id == project_id &&p.project_role == "partner")
       .Select(up =>
       new SelectListItem {
                         // You may append User email also here
                         Text= up.AspNetUsers.FirstName +" "+up.AspNetUsers.LastName,
                         Value = up.AspNetUsers.Id.ToString() })
       .ToList();
    

    您可以通过不使用 ViewBag 之类的动态内容并切换到强类型视图模型来在您的操作方法和视图之间传递数据来使您的代码更具可读性/可维护性

    public class AssignProjectOwnerShipVm
    {
      public int SelectedPartner {set;get;}
      public int SelectedProject {set;get;}
      public List<SelectListItem> Projects {set;get;}
      public List<SelectListItem> Partners {set;get;}
    }
    

    在你的 GET 操作中

    pubilc ActionResult AssignProject()
    {
      var vm = new AssignProjectOwnerShipVm();
      vm.Projects = db.Projects.Select(s=>new SelectListItem
                          {
                            Value = s.ProjectId.ToString(),
                            Text = s.ProjectName 
                          }).ToList();
      vm.Partners=db.Users_projects
           .Where(p => p.project_id == project_id &&p.project_role == "partner")
           .Select(up =>
           new SelectListItem {
                         // You may append User email also here
                         Text= up.AspNetUsers.FirstName +" "+up.AspNetUsers.LastName,
                         Value = up.AspNetUsers.Id.ToString() })
       .ToList();
    
     return View(vm);
    }
    

    还有你的看法

    @model AssignProjectOwnerShipVm
    @using(Html.BeginForm())
    {
      @Html.DrowpDownListFor(s=>s.SelectedProject,Model.Projects,"Select one")
      @Html.DrowpDownListFor(s=>s.SelectedPartner,Model.Partners,"Select one")
    <input type="submit" />
    
    }
    

    还有你的 HttpPost

    [HttpPost]
    public ActionResult AssignProjecct(AssignProjectOWnerShipVm model)
    {
      // check for model.SelectedParter and model.SelectedProject
     // to do  :Save and redirect
    }
    

    【讨论】:

      猜你喜欢
      • 2017-03-05
      • 2021-12-06
      • 1970-01-01
      • 1970-01-01
      • 2012-01-31
      • 2012-04-21
      • 1970-01-01
      • 1970-01-01
      • 2013-08-20
      相关资源
      最近更新 更多