manish-gusain8909 Ответов: 1

Как привязать динамические значения в выпадающем списке в MVC


у меня есть выпадающий список в форме(представлении), текст и значения которой я связываю из базы данных, я хочу сохранить выбранное значение drodown в базе данных на кнопке отправки формы.



выпадающие значения и текст привязываются в выпадающем списке , но на кнопке отправки
"Objectournamentregistration.COUNTRY_ID" равен нулю

Что я уже пробовал:

метод действия для вызова представления
public ActionResult TOURNAMENT_PROFILE()
        {
            objSQLHeplper = new SQLHelper();
            objCommonClass = new CommonClass();
            HttpCookie cookie = Request.Cookies["userInfo"];
            ObjTournamentDetail = new TournamentRegistration();
            
            if (Request.Cookies["UserName"] != null && Request.Cookies["UserPassword"] != null )
            {
                UserName = Request.Cookies["UserName"].Value.ToString();
                Password = Request.Cookies["UserPassword"].Value.ToString();
                ObjMenuName = objCommonClass.UserLoin(UserName, Password);
                if (ObjMenuName != null)
                {
                  
                    ObjMenuName = null;
                    dt= new DataTable();
                    dt = objCommonClass.GETCOUNTRY();
                    List<SelectListItem> OblListTournamentRegistration = new List<SelectListItem>();
                    foreach(DataRow dr in dt.Rows)
                    {
                        OblListTournamentRegistration.Add(new SelectListItem() { Text = dr["COUNTRY_NAME"].ToString(), Value = dr["COUNTRY_ID"].ToString() });
       
                    }
                    ViewBag.Country = OblListTournamentRegistration;

                    

                    if (Session["ErrorMessage"] != null)
                    {
                        ViewBag.ALertMessage = Session["ErrorMessage"].ToString();
                        ViewBag.JavaScriptFunction = string.Format("FailMessagePopup('{0}');", AlertMessage);
   
                    }
                    else if (Session["SuceessMessage"] != null)
                    {
                        ViewBag.ALertMessage = Session["SuceessMessage"].ToString();
                        ViewBag.JavaScriptFunction = string.Format("SuccessMessagePopup('{0}');", AlertMessage);
                    }
                    return View("TournamentRegistration");
                }
                else
                {
                    return RedirectToAction("MainPage", "Home");
                }
            }
            else
            {
                return RedirectToAction("MainPage", "Home");
            }
        }



вид
@Html.DropDownListFor(model => model.COUNTRY_NAME, new SelectList(ViewBag.Country, "Value", "Text"), new { @class = "form-control glyphicon glyphicon-user", @value = "", placeholder = "Tournament Name", id = "txtTournamentName" })


способ действия на кнопке Отправить
public ActionResult TournamentRegistration(TournamentRegistration ObjTournamentRegistration)
        {
            
           try
            {

               
                MySqlConnection connection = new MySqlConnection(SQLHelper.ConnectionString);
                connection.Open();
                MySqlCommand cmd = new MySqlCommand("TOURNAMENT_REGISTRATION", connection);
                cmd.CommandType = CommandType.StoredProcedure;
	        cmd.Parameters.AddWithValue(
                cmd.Parameters.AddWithValue("@PI_COUNTRY", ObjTournamentRegistration.COUNTRY_ID);
                .ToString());
                cmd.ExecuteNonQuery();               
                TournamentLogo=null;   
                Session["SuceessMessage"] = "Sucessfull Registered";
                
                return RedirectToAction("TOURNAMENT_PROFILE", "MainPageMenuBar");
            }
            catch (Exception ex)
            {
                Session["ErrorMessage"] = "Something Went Wrong";
                return RedirectToAction("TOURNAMENT_PROFILE", "MainPageMenuBar");
            }
        }
}

Richard Deeming

Request.Cookies["UserPassword"]


Нет, нет, нет, нет, нет, - Нет!!!!

НИКОГДА храните учетные данные пользователя в файлах cookie.

Вы проверяете учетные данные однажды, и генерировать криптографически безопасный токен аутентификации. Вы храните маркер аутентификации в файле cookie, помеченном как HTTP-only, предпочтительно помеченный как "безопасный" и "тот же сайт". При последующих запросах вы извлекаете маркер аутентификации и проверяете его.

Вы также убедитесь, что вы никогда храните пароль пользователя в виде обычного текста или с помощью обратимого шифрования. Вы всегда храните только соленый хэш пароля, используя уникальную соль на запись и используя несколько раундов функции вывода ключа, такой как PBKDF2 или bcrypt.

Но вам не нужно делать ничего из этого самостоятельно. ASP.NET уже есть совершенно хорошие встроенные системы аутентификации и авторизации. Используйте их вместо этого.

Безопасность, аутентификация и авторизация с помощью ASP.NET MVC[^]
Личность ASP.NET [^]

1 Ответов

Рейтинг:
0

Christian Graus

COUNTRY_NAME-это значение вашего элемента управления, почему вы читаете COUNTRY_ID? Вы можете просмотреть всю запись в отладчике, чтобы увидеть, что отправляется. Сначала выясните, если браузер отправляет вам данные, тогда вы будете знать, где находится ваша ошибка