-2

我正在尝试通过 mvc 中的 Action 方法返回视图和列表,但出现错误。这里我通过 view() 传递“Detail.PlantName”中的数据列表以及视图名称“MasterPage”;

[HttpPost]
public ActionResult Index(FormData person)
{
 TempData["EmpId"] = person.EmpId.ToString();
 FormData Detail = new FormData();
 Detail.PlantName = PopulatePlant(TempData["EmpId"].ToString());       
 return View("MasterPage",, Detail.PlantName.ToList());
}



private static List<SelectListItem> PopulatePlant(string empID)
        {
            List<SelectListItem> PName = new List<SelectListItem>();
            String connectionString = ConfigurationManager.ConnectionStrings["conndbprodnew"].ConnectionString;
            OracleConnection connection = new OracleConnection(connectionString);
            OracleCommand command = new OracleCommand("SELECT DISTINCT PARAM.PAR_CD ,PARAM.PAR_DESC1 FROM PARAM WHERE PARAM.PAR_TYP = 'LOC' AND PAR_REG_IND = 'X' and Param.Par_Cd in (select plant_code from user_level_access where token_no = :token_no) ", connection);
            connection.Open();
            command.CommandType = CommandType.Text;
            command.Parameters.AddWithValue(":token_no", empID);
            using (OracleDataReader sdr = command.ExecuteReader())
            {
                while (sdr.Read())
                {
                    PName.Add(new SelectListItem
                    {
                        Text = sdr["PAR_DESC1"].ToString(),
                        Value = sdr["PAR_CD"].ToString()
                    });
                }
                connection.Close();
            }
            return PName;
        }

模型

namespace Rm_Module.Models
{
    public class FormData
    {
        public int EmpId { get; set; }
        public string Password { get; set; }
        public List<SelectListItem> PlantName { get; set; }
        public int? PlantId { get; set; }

    }
}

在 MasterPage.cshtml

@model IList<Rm_Module.Models.FormData>
<body class="index-page"> 
 @using (Html.BeginForm("Index", "Home", FormMethod.Post))
    {<div class="collapse navbar-collapse" id="navigation-index">
                    <ul class="nav navbar-nav navbar-right">
                        <li>                            
                          <i class="material-icons">home</i> Home                            
                        </li>
                        <li>
                            @Html.DropDownListFor(m => m.PlantId,Model.PlantName, "Please Select");
                        </li>
                   </ul>
       </div>
}

但无法在视图中绑定数据。任何想法将不胜感激如何实现它。出现错误“Listdoesnot conatan 'PlantName' 的定义并且没有方法 'PlantName' 接受 List 类型的第一个参数”

4

1 回答 1

1

现在,您返回视图的是 SelectListItems 列表。SelectListItems 列表与 FormData 对象列表不同,这是视图所期望的。

无论哪种方式,您的模型都是一个列表,因此永远不会有您想在 DropdownList 中使用的名为“PlantId”或“PlantName”的属性。但是,单个 FormData 对象确实具有这些属性。

因此,如评论中所述,您只需要

1)将正确的模型对象返回到您的视图:

return View("MasterPage", Detail);

2)将您的视图模型设置为简单

@model Rm_Module.Models.FormData

所以它接受一个 FormData 对象 - 而不是它们的列表。

于 2018-05-11T12:08:20.623 回答