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”]中存储(传递)数据。