После отправки выпадающего списка возникает ошибка MVC - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть выпадающий список, после отправки появляется ошибка http://prntscr.com/lnagi8

Это представление

 @Html.DropDownListFor(m => m.SelectedAgrBall, Model.agrBall)
    <input type="submit" value="save" />

, а это Controller (Post)

[HttpPost]
public ActionResult Main(string Years, string Periods, Organisations m)
{
    string s = m.SelectedAgrBall;
    int ss = int.Parse(s);
    string t = Years;
    string b = Periods;
    return View();
}

Что мне делать?Контроллер

public ActionResult Main()
    {
        aspregistrationEntities1 obj = new aspregistrationEntities1();

        List<agrBal> aggrBad = obj.agrBals.ToList();
        List<agrBReceiv> aggrRec = obj.agrBReceivs.ToList();

        SortedSet<string> org = new SortedSet<string>();
        List<SelectListItem> items = new List<SelectListItem>();
        Dictionary<int, string> orgNames = new Dictionary<int, string>();

        foreach (agrBal tmp in aggrBad)
        {
            org.Add(tmp.ORG.ToString());
        }
        foreach(agrBReceiv tmp in aggrRec)
        {
            orgNames.Add(int.Parse(tmp.PBS.ToString()), tmp.KBO_RU.ToString());
        }

        //Drop organisations in dropdownlist
        var types = new List<SelectListItem>();
        foreach (string tmp in org)
        {
            string s = tmp+" - "+orgNames[int.Parse(tmp)];
            SelectListItem item1 = new SelectListItem() { Text = s, Value = tmp.ToString() };
            items.Add(item1);
        }

        Organisations m = new Organisations() {
             agrBall= items
        };
        return View(m);
    }

Модель

{
public class Organisations
{
    public List<SelectListItem> agrBall { get; set; }
    public string SelectedAgrBall { get; set; }
}
}

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Следовал furkanhb, а затем изменил метод модель / пост, чтобы позволить перезагрузить страницу с предварительно выбранным значением

public class Organisations
{
    public List<SelectListItem> agrBall { get; set; }
    public SelectListItem SelectedAgrBall { get; set; }
}

[HttpPost]
public ActionResult Main(string Years, string Periods, Organisations m)
{
    string s = m.SelectedAgrBall.Value;
    int ss = int.Parse(s);
    string t = Years;
    string b = Periods;
    return View(m);
} 
0 голосов
/ 26 ноября 2018

Вы возвращаете View без модели в действии HttpPost, поэтому возникает исключение нулевой ссылки, поскольку вы используете объект Model в Main.cshtml

. Вы должны передать объект модели для просмотра.

(Iподумай) если твоя модель Organizations m такая

[HttpPost]
    public ActionResult Main(string Years, string Periods, Organisations m)
    {
        string s = m.SelectedAgrBall;
        int ss = int.Parse(s);
        string t = Years;
        string b = Periods;
        return View(m);
    } 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...