我需要提供以下地址
http://example.com/Content/Details?cid=34&query=%D8%AA%D8%AD&positions%5B0%5D=true&positions%5B0%5D=false&positions%5B1%5D=false&positions%5B2%5D=false
解码后的这个网址是:
http://example.com/Content/Details?cid=32&query=تحلیل&positions[0]=true&positions[0]=false&positions[1]=false&positions[2]=false
我的操作方法包含以下参数
public ActionResult Details(
string cid, string query, int? page, int id = 0, params string[] positions)
{
if(positions != null)
{
ViewBag.Title = positions[0];
ViewBag.Description = positions[1];
ViewBag.KeyWord = positions[2];
}
}
但是当我设置position参数所需的参数时,我得到一个错误:
实际上我不能使用位置[0],位置[1]和位置[2] !!!
我的cshtml页面:
@{ title
@Html.CheckBox("positions[0]", ViewBag.Title as string)
description
@Html.CheckBox("positions[1]", ViewBag.Description as string)
keyword
@Html.CheckBox("positions[2]", ViewBag.KeyWord as string)
}
@Html.PagedListPager(Model, page => Url.Action("Details", new {cid = ViewBag.currentFilter, query= ViewBag.currentSearchString , positions[0]=ViewBag.title , positions[1]=ViewBag.Description ,position[2]=ViewBag.KeyWord,page }))
如何在cshtml页面中设置position参数的值?
我如何设置位置[0],位置[2]和位置[3] ......我只想知道这个
我的其余代码是正确的
请帮帮我
答案 0 :(得分:0)
您应该在控制器中阅读它们并在ViewBag或ViewData中设置它们:
ViewData["positons_0"] = Request.QueryString["positions[0]"];
ViewData["positons_1"] = Request.QueryString["positions[1]"];
// etc ...
然后您也可以在视图中使用它们。
但是如果可能的话,我建议您从查询字符串中删除方括号。这些是IP v6地址文字的保留字符(请参阅here),这就是为什么你不能在MVC中使用它们。你的网址应该是:
http://example.com/Content/Details?cid=32&query=تحلیل&positions=true&positions=false&positions=false&positions=false
通过这种方式,您可以在控制器中使用它:
public ActionResult Details(string cid, string query, int? page, int id = 0, string[] positions)
{
// ....
}
...并查看:
@foreach(string position in Model.positions) // example
{
// ....
}