C# 为什么不是';是否在浏览器中显示viewbag值,即使它返回值?

C# 为什么不是';是否在浏览器中显示viewbag值,即使它返回值?,c#,asp.net-mvc-4,C#,Asp.net Mvc 4,从“我的控制器”中的某个操作方法传递到另一个操作的项目列表,以及存储到视图包中的值。即使它在调试时也会显示值。它没有显示在浏览器上。我想把这些值放在一个选择框中。我怎样才能解决这个问题?谁来帮帮我 **内部控制器** public ActionResult Index() { ViewBag.s = TempData["plist"]; return View("Index"); } [HttpPost] public ActionResult matchpin

从“我的控制器”中的某个操作方法传递到另一个操作的项目列表,以及存储到视图包中的值。即使它在调试时也会显示值。它没有显示在浏览器上。我想把这些值放在一个选择框中。我怎样才能解决这个问题?谁来帮帮我

**内部控制器**

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");

        } 
public ActionResult Index()
{
ViewBag.s=TempData[“plist”];
返回视图(“索引”);
}
[HttpPost]
公共操作结果匹配PIN(字符串id)
{
int d=转换为32(id);
List plist=新列表();
使用(SqlConnection con=新的SqlConnection(consting))
{
使用(SqlCommand cmd=newsqlcommand(“getpin”,con))
{
cmd.CommandType=CommandType.storedProcess;
cmd.Parameters.AddWithValue(“@pin”,d);
con.Open();
SqlDataReader=cmd.ExecuteReader();
while(reader.Read())
{
var引脚=新引脚()
{
po=Convert.ToString(读卡器[“po”]),
};
plist.Add(pin);
}
}
}
TempData[“plist”]=plist;
返回重定向到操作(“索引”、“主页”);
} 
**鉴于:

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

-挑选-
@if(ViewBag.s!=null)
{
foreach(ViewBag.s中的变量f)
{
@f、 po
}
} 

您可以像这样查看选择列表中的数据

在控制器中

 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");
    }
public ActionResult Index()
{
字符串firstnamevalue=“Hello”;
string lastnamevalue=“欢迎”;
列表=新列表();
list.Add(firstnamevalue);
添加(lastnamevalue);
TempData[“plist”]=列表;
ViewBag.s=TempData[“plist”];
返回视图(“索引”);
}
在视图中

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

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

-挑选-
@if(ViewBag.s!=null)
{
foreach(ViewBag.s中的变量f)
{
@f
}
}
输出 当您不能满足此答案时,请在控制器中编辑您的问题。
然后告诉我如何传递数据?

如果将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>

-挑选-
@if(ViewBag.s!=null)
{

foreach(在(List)ViewBag.s中的varf)//请参阅这里的casting back,您可以调试
foreach(在ViewBag.s中的varf)
代码行?是的,先生。它也显示值。但是当涉及到浏览器时,它没有显示。不要将
-select-
放在循环中,否则它会在您的选择下拉菜单中多次添加选择。我更正了。但值仍然没有显示在浏览器中。这是上周的事。如果@上设置断点e> 在mvc*.cshtml文件上声明,并共享具有值的屏幕截图,这样我们就可以找出problem@Ajay请在Index controller中提供更多详细信息,说明如何在TempData[“plist”]中存储(传递)数据。