gpt4 book ai didi

asp.net-mvc - 在 MVC 中生成绝对 Url 时出现问题

转载 作者:行者123 更新时间:2023-12-02 04:49:57 24 4
gpt4 key购买 nike

你好,我已经创建了一个 mvc 网站,如果我正在编写这样的代码,它可以与本地主机一起正常工作:

    <base href="http://localhost:5400/" />
<li><a class="home" href="/Home/Index/">Home</a></li>
<li class="wish"><a class="wishlist" href="/Products/Index/" id="wishlist-total">Products</a></li>
<li><a class="account" href="/Home/Contact/">Contact Us</a></li>

但是如果我想改变这个,现在要实时运行它:

  <base href="http://localhost:5400/" />   

用这个:

 <base href="HttpContext.Current.Request.Url" />

然后它实际上每次都获取完整的根 url。所以每当我单击任何菜单并移动到下一个菜单时,它也会重新获得以前的菜单路径。

对于这个问题,我尝试了下面的代码,但它也不起作用。

<li><a href="@Url.Action("Index", "Home", null, Request.Url.Scheme)">Home</a></li>
<li><a href="@Url.Action("Index","Products",null,Request.Url.Scheme)">Products</a></li>
<li> <a href="@Url.Action("Contact","Home",null,Request.Url.Scheme)">Contact</a></li>

根据我的说法,这段代码可以工作,但是如果我试图将“null”作为第三个参数传递,那么我会给出错误:

错误:未声明“null”。不再支持“Null”常量;请改用“System.DBNull”。

有人可以建议我需要更改什么吗?

谢谢

最佳答案

快速修复...

@Url.Action("Index", "Home")

没有必要输入null作为参数...如果你想表明一个参数可以为null,那么你需要在路由中定义它自己,如果参数缺少,那么它会知道该值隐式为空...

// http://yoursite/Example/{id}
[Route("~/Example/{id}"] // Can't be null
public ActionResult Example(string id){ return View(); }

// http://yoursite/ExampleTwo/
[Route("~/ExampleTwo/{id?} // Can be null
public ActionResult ExampleTwo(string id) { return View(); }

TLDR 如果你想要更多的错误...

  1. 你的问题实际上表明了一个更大的问题......看起来你正在接受来自 URI 的查询直接进入 SQL 查询......如果你这样做,你就是在打开自己直到注入(inject)攻击,我的一部分人觉得任何这样做的人都会受到影响......我不能袖手旁观,什么都不说...... sanitizer 任何您从用户那里收到的数据,无论它来自哪里,example

  2. 删除所有那些神奇的字符串......你不应该有任何字符串,比如你刚刚显示的字符串......

    // Bad...
    <a class="home" href="/Home/Index/">

    // Better...
    <a class="home" href="@Url.Action("Index", "Home")">Home</a>

    // Good
    @Html.ActionLink("Home", "Index", "Home")

关于asp.net-mvc - 在 MVC 中生成绝对 Url 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29732368/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com