【问题标题】:MVC 4 - Razor - Pass a variable into a href urlMVC 4 - Razor - 将变量传递到 href url
【发布时间】:2014-03-16 15:24:30
【问题描述】:

如何将变量传递到 url?

我尝试的是这个,但这不起作用。网址仅显示:

http://myurltest.com 而不是完整路径

@if(check1 != "d")
{    
    <li>
        <div class="a"></div>
    </li>
    <li>
        <div class="b"></div>
    </li>
    <li>
        <a href="http://myurltest.com/" + @check1 + "/go/5/true">
        <div class="c"></div>
        </a>
    </li>
}

【问题讨论】:

    标签: c# asp.net asp.net-mvc razor


    【解决方案1】:

    像这样:

    <a href='@string.Format("http://myurltest.com/{0}/go/5/true", check1)'>
    

    重点是将整个 URL 插入到标记中,而不是结合标记和代码部分。

    【讨论】:

    • 非常感谢...它工作得很好.. +1 我接受在我允许的情况下在 5 分钟内回答你..
    • 这是否缺少结束语)
    • 是否可以使用@Html.ActionLink("Name", "CompleteURL")生成等效的html?我试过了,但是生成的链接(可以说:http://website/controllerB/actionmethodB?id=aaaxxx)被添加到 current url 中。生成的最终链接是 - http://website/controllerA/http:/controllerB/actionmethodB?id=aaaxxx
    • @barnes,这取决于您生成链接的准确程度。您能否为此发布一个单独的问题,因为 cmets 不适合讨论此类事情?
    • 当网站作为应用程序托管并且您无法获得整个路径时,这不起作用,您可以将其静态创建为 var,但出于维护目的将是一个令人头疼的问题替换你的 url 的所有元素,你应该考虑@Alberto 回答这个案例
    【解决方案2】:

    在 C# 6 中使用字符串插值

    <a href="@($"http://myurltest.com/{check1}/go/5/true")" >
    

    Wiki

    在计算机编程中,字符串插值或变量插值(也称为变量替换或变量扩展)是评估包含一个或多个占位符的字符串文字的过程,产生占位符被其对应值替换的结果。它是一种简单的模板处理形式。2 或者,在形式上,是一种准引用(或逻辑替换解释)的形式。与字符串连接相比,字符串插值允许更简单、更直观的字符串格式化和内容规范。

    MSDN

    【讨论】:

    • 加一个用于使用字符串插值,最新响应
    【解决方案3】:

    如果它指向您的网站/应用程序的操作,那么您应该使用

    @Url.Action(your parameters)
    

    在您的 href 属性中。

    请注意,您还可以使用

    生成完整链接
    @Html.ActionLink(your parameters)
    

    那些是重载的方法,Intellisense 或 google 会描述所有可能的替代方案。

    通常,对于指向同一网站的操作的链接,这些方法比处理 url 字符串(如建议的 "http://myurltest.com/@check1/go/5/true")更好,因为可以在本地机器上使用(其中基本 URL 是 localhost:someport)并且优于 @987654324 @(相对路径),因为避免了部署时 URL 不匹配。

    另一方面,如果链接指向外部资源,那么类似于建议的&lt;a href="http://myurltest.com/@check1/go/5/true"&gt; 就可以了。

    祝你有美好的一天,

    阿尔伯托

    【讨论】:

    • 我认为任何在“祝你有美好的一天,阿尔贝托”这一有用答案上签名的人至少应该得到一些支持。
    【解决方案4】:

    试试这个,它正在工作

      <a href="http://myurltest.com/@check1/go/5/true">
    

    【讨论】:

      【解决方案5】:

      试试这个:

      <a href="@Url.Content("~/id?" + check1)">click here</a>
      

      【讨论】:

        猜你喜欢
        • 2014-01-22
        • 1970-01-01
        • 2017-10-23
        • 2015-10-30
        • 1970-01-01
        • 1970-01-01
        • 2014-09-08
        • 2012-02-21
        • 2018-12-14
        相关资源
        最近更新 更多