传递参数或查询字符串给_Layout.cshtml中的顶部导航在ASP.NET中的实现方式
P粉343408929
P粉343408929 2023-09-01 10:01:28
[HTML讨论组]
<p>在我的控制器中,我有三个参数。(GET:/Class/List)</p> <pre class="brush:php;toolbar:false;">public class ClassController : Controller { public ActionResult List(string classCode = null, string className = null, List&lt;string&gt; semester = null) { ... } }</pre> <p>而我在我的导航栏中得到了这个...</p> <pre class="brush:php;toolbar:false;">&lt;a class=&quot;nav-link text-dark&quot; asp-area=&quot;&quot; asp-controller=&quot;Class&quot; asp-action=&quot;List&quot;&gt;Classes&lt;/a&gt;</pre> <p>我想传递一个参数semester的值,使得链接看起来像<code>localhost/Class/List?semester=9&amp;semester=1</code>。谢谢!</p> <p>我尝试过ViewBag和asp-route-id,但是失败了。</p>
P粉343408929
P粉343408929

全部回复(2)
P粉462328904

这可能不起作用,因为你的ActionResult List期望的是一个字符串列表。根据我的经验,一个字符串列表通常需要你通过循环Model -> item.semester来列出视图中的所有值。

你可以尝试将List<string>更改为单个string

public ActionResult List(string classCode = null, string className = null, string semester = null)

然后将这个附加到“a”标签。假设你在控制器中填充了一个Viewbag.semesterId

asp-semester="@ViewBag.semesterId"
P粉754473468

你可以尝试将List转换为查询字符串。 操作:

public IActionResult A()
{
    ViewBag.List = new List<string> { "a", "b", "c" };
  
    return View();

}

A.cshtml:

@{
    var list=ViewBag.List as List<string>;
    var result = "?semester=" +String.Join("&semester=", list);
}
<a class="nav-link text-dark" href="/Class/List@(result)">Classes</a>

结果:

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号