Почему значения viewbag не отображаются в браузере, даже если он возвращает значения? - PullRequest
0 голосов
/ 22 мая 2019

enter image description here Список элементов, переходящих от метода действия к другому действию в моем контроллере, и значения, сохраненные в View Bag. Даже он показывает значения при отладке. Это не отображается в браузере. Я хочу поместить эти значения в поле выбора. Как я могу решить это? кто-нибудь, пожалуйста, помогите мне.

** в контроллере **

public ActionResult Index()
{
    ViewBag.s = TempData["plist"];
    return View("Index"); 
}


[HttpPost]
     public ActionResult  matchpin(string id)
        {
            int d = Convert.ToInt32(id);
            List<pin> plist = new List<pin>();
            using (SqlConnection con = new SqlConnection(constring))
            {
                using (SqlCommand cmd = new SqlCommand("getpin", con))
                {
                    cmd.CommandType = CommandType.StoredProcedure;

                    cmd.Parameters.AddWithValue("@pin", d);
                    con.Open();
                    SqlDataReader reader = cmd.ExecuteReader();
                    while (reader.Read())
                    {
                        var pin = new pin()
                        {


                            po = Convert.ToString(reader["po"]),

                        };
                        plist.Add(pin);
                    }


                }
            }

            TempData["plist"] = plist;
            return RedirectToAction("Index", "home");

        } 

** В виду:

<select name="postoffice">                   
    <option>-select-</option>
    @if (ViewBag.s != null)
    {
        foreach (var f in ViewBag.s)
        {
            <option value="@f.po">@f.po</option>
        }
    } 
</select>

Ответы [ 2 ]

1 голос
/ 22 мая 2019

Вы можете просматривать данные в списке выбора следующим образом

В контроллере

 public ActionResult Index()
    {
        string firstnamevalue = "Hello";
        string lastnamevalue = "Welcome";

        List<string> list = new List<string>();
        list.Add(firstnamevalue);
        list.Add(lastnamevalue);

        TempData["plist"] = list;
        ViewBag.s = TempData["plist"];
        return View("Index");
    }

В представлении

<select name="postoffice">
<option>-select-</option>
@if (ViewBag.s != null)
{
    foreach (var f in ViewBag.s)
    {

        <option value="@f">@f</option>
    }
}

Выход enter image description here Если вы не можете удовлетворить этот ответ, пожалуйста, отредактируйте ваш вопрос в контроллере.Тогда скажите мне, как вы передаете данные?

0 голосов
/ 23 мая 2019

Должно быть легко, если вы приведете объект viewbag обратно в список.Это также вернет вам настойчивость.

<select name="postoffice">                   
    <option>-select-</option>
    @if (ViewBag.s != null)
    {
        foreach (var f in (List<pin>) ViewBag.s) // See casting back here <---------
        {
            <option value="@f.po">@f.po</option>
        }
    } 
</select>
...