Как заполнить значение в выпадающем списке в режиме редактирования в ASP.NET MVC - PullRequest
0 голосов
/ 03 октября 2019

У меня есть форма, которая содержит список стран и названий штатов с возможностью редактирования и удаления.

Вот моя модель и контроллер

Модель

public class StateModel
{
    public int StateID { get; set; }
    [Required]
    public int CountryID { get; set; }
    [DisplayName("State Name")]
    [Required]
    public string StateName { get; set; }
    public string CrDate { get; set; }
    public string CrBy { get; set; }
    public string mdfDate { get; set; }
    public string mdfBy { get; set; }
    public string isAct { get; set; }
    public string isDelete { get; set; }
}

public class StateDisplayModel // Index Listing
{
    [DisplayName("#")]
    public int StateID { get; set; }
    [DisplayName("Country")]
    public string Countryname { get; set; }
    [DisplayName("State")]
    public string StateName { get; set; }
}

Контроллер

    public ActionResult UpdateStates(int Id)
    {           
        StateData statData = new StateData();

        List<StateDisplayModel> stateList = statData.stateDisplaytList();
        var cntry = stateList.Where(s => s.StateID == Id).FirstOrDefault();

        return View(cntry);
    }

    [HttpPost]
    public ActionResult UpdateStates(StateModel _stsMdl)
    {          
        if (_stsMdl.StateName != "" && _stsMdl.CountryID > 0)
        {
            StateData mystData = new StateData();
            string rs = mystData.updateState(_stsMdl);

            if (rs == "1")
            {
                return RedirectToAction("States");
            }
            else
            {
                return Content(rs.ToString());
            }
        }
        else
        {
            return View();
        }
    }

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

Вид

 @model IEnumerable<Intrans.Core.SuperAdmin.StateDisplayModel>
 @Html.DropDownListFor(m => m.stateId, mcntry)
                    @Html.ValidationMessageFor(model => model.stateId, "", new { @class = "text-danger" })

Как исправитьэто?

Заранее спасибо.

1 Ответ

0 голосов
/ 04 октября 2019

https://dotnetfiddle.net/88K0av

Контроллер / Действие / Просмотр модели

namespace WebApplicationSkip1.Controllers
{
    public class CountryModel
    {
        [DisplayName("#")]
        public int StateID { get; set; }
        [DisplayName("Country")]
        public string Countryname { get; set; }
        [DisplayName("State")]
        public string StateName { get; set; }
    }

    public class StateDisplayModel // Index Listing
    {
        public List<CountryModel> CountryModel { get; set; }
        public string SelectedCountry { get; set; }
    }

    public class StateData
    {
        public StateDisplayModel stateDisplaytList()
        {
            CountryModel sdm1 = new CountryModel { Countryname = "USA", StateID = 1, StateName = "Arizona" };
            CountryModel sdm2 = new CountryModel { Countryname = "France", StateID = 2, StateName = "FranceCity" };
            CountryModel sdm3 = new CountryModel { Countryname = "Germany", StateID = 3, StateName = "GermanyCity" };
            StateDisplayModel sdm = new StateDisplayModel();
            sdm.CountryModel = new List<CountryModel>
            {
                sdm1,
                sdm2,
                sdm3
            };
            return sdm;
        }
    }

    public class HomeController : Controller
    {
        [HttpPost]
        public ActionResult Index8(StateDisplayModel sdm)
        {
            //put a breakpoint here to see selected item
            var q = sdm.SelectedCountry;
            return View();
        }

        public ActionResult Index8(int? Id)
        {
            //initial id
            Id = 1;

            StateData statData = new StateData();

            StateDisplayModel cntry = statData.stateDisplaytList();
            //var cntry = stateList.Where(s => s.StateID == Id).FirstOrDefault();
            //get all instead

            return View(cntry);
        }

Просмотр

@model WebApplicationSkip1.Controllers.StateDisplayModel
@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index8</title>
</head>
<body>
    <div>
        @using (Html.BeginForm())
        {
            @*@Html.DropDownListFor(m => m.stateId, mcntry)*@
            @Html.DropDownListFor(r => r.SelectedCountry, new SelectList(Model.CountryModel, "Countryname", "Countryname"), "--select--")
            @*@Html.ValidationMessageFor(model => model.stateId, "", new { @class = "text-danger" })*@
            <input type="submit" value="Go" />
        }

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