Попытка вернуть представление и список с помощью метода Action в mvc - PullRequest
0 голосов
/ 11 мая 2018

Я пытаюсь вернуть представление и список с помощью метода Action в mvc, но получаю сообщение об ошибке. Здесь я передаю список данных в Detail.PlantName через view () вместе с именем представления «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>
}

Но не в состоянии связывать данные в поле зрения. Любая идея будет признательна за то, как этого добиться.getting error "List не содержит определения для« PlantName », а метод« PlantName »не принимает первый аргумент типа« List »"

1 Ответ

0 голосов
/ 11 мая 2018

Прямо сейчас, то, что вы возвращаете представлению, является списком SelectListItems. Список SelectListItems не совпадает со списком объектов FormData, чего и ожидает представление.

В любом случае, ваша модель представляет собой список и, следовательно, никогда не будет иметь свойства с именем «PlantId» или «PlantName», которое вы хотите использовать в своем DropdownList. Однако один объект FormData имеет эти свойства.

Поэтому, как уже упоминалось в комментариях, вам просто нужно

1) вернуть правильный объект модели на ваш взгляд:

return View("MasterPage", Detail);

и

2) просто установите модель вашего вида

@model Rm_Module.Models.FormData

поэтому он принимает один объект FormData - а не их список.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...