【问题标题】:ASP MVC href to a controller/viewASP MVC href 到控制器/视图
【发布时间】:2013-07-14 07:30:43
【问题描述】:

我有这个:

<li><a href="/Users/Index)" class="elements"><span>Clients</span></a></li>

效果很好。但是,如果我已经在此页面或控制器上,例如/Users/Details 并单击此链接,它会将我重定向到 /Users/Index

无论我当前在网站上的位置如何,我如何才能在href 中获得正确的路径?

【问题讨论】:

标签: asp.net asp.net-mvc asp.net-mvc-4 razor href


【解决方案1】:

有几种方法可以实现这一点。您可以执行以下操作:

<li>
     @Html.ActionLink("Clients", "Index", "User", new { @class = "elements" }, null)
</li>

或者这个:

<li>
     <a href="@Url.Action("Index", "Users")" class="elements">
          <span>Clients</span>
     </a>
</li>

最近我做了以下事情:

<a href="@Url.Action("Index", null, new { area = string.Empty, controller = "User" }, Request.Url.Scheme)">
     <span>Clients</span>
</a>

结果会将http://localhost/10000(或您使用的任何端口)附加到 URL 结构中,例如:

http://localhost:10000/Users

我希望这会有所帮助。

【讨论】:

    【解决方案2】:

    怎么样

    <li>
    <a href="@Url.Action("Index", "Users")" class="elements"><span>Clients</span></a>
    </li>
    

    【讨论】:

      【解决方案3】:

      尝试以下方法:

      <a asp-controller="Users" asp-action="Index"></a>
      

      (适用于 ASP.NET 5 和 MVC 6)

      【讨论】:

      • 它对 ASP.NET 无效。可能对旧的 ASP 页面有效。
      • 仅对 ASP.NET 5 即 MVC 6 有效
      【解决方案4】:

      这里的“~”是指根目录,Home是控制器,Download_Excel_File是actionmethod

       <a href="~/Home/Download_Excel_File" />
      

      【讨论】:

        【解决方案5】:

        你可以修改如下

        <li><a href="./Index" class="elements"><span>Clients</span></a></li>
        

        额外的点表示您在同一个控制器中。如果你想将控制器更改为不同的控制器,那么你可以这样写

        <li><a href="../newController/Index" class="elements"><span>Clients</span></a></li>
        

        【讨论】:

          【解决方案6】:

          您也可以使用这种非常简化的形式:

          @Html.ActionLink("Come back to Home", "Index", "Home")
          

          其中:
          Come back to Home 是将出现在页面上的文本
          Index 是视图名称
          Home 是控制器名称

          【讨论】:

            【解决方案7】:

            如果您想使用一种模式进行创建和更新,您也可以这样做

            C#

            onclick="showInPopup('@Url.Action("CreateOrUpdate","Request",null,Context.Request.Scheme)','Create Request')"
            
            
            onclick="showInPopup('@Url.Action("CreateOrUpdate","Request",new{id = item.id },Context.Request.Scheme)','Edit Request')"
            

            JS

            showInPopup = (url, title) => {
                $.ajax({
                    type: "GET",
                    url: url,
                    success: function (res) {
                        $("#form-modal .modal-body").html(res);
                        $("#form-modal .modal-title").html(title);
                        $("#form-modal").modal('show');
                    }
                })
            }
            

            【讨论】:

              【解决方案8】:

              如果使用 ASP.NET Core,您可以将接受的答案调整为:

              <a href="@Url.Action("Index", null, new { area = string.Empty, controller = "User" }, @Context.Request.Scheme)">
                   <span>Clients</span>
              </a>
              

              替换@Request.Url.Scheme @Context.Request.Scheme

              【讨论】:

                猜你喜欢
                • 2016-08-04
                • 2015-01-28
                • 1970-01-01
                • 1970-01-01
                • 2011-10-25
                • 2018-05-06
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多