【问题标题】:MVC controller name appears twice in URLMVC 控制器名称在 URL 中出现两次
【发布时间】:2019-12-03 07:38:10
【问题描述】:

我有一个图像链接扩展程序,用于通过一些计算导航到同一视图。一旦用户从下拉列表中选择一个值并单击链接,我需要导航到同一个视图并传递他们选择的值。一切正常,除了我传递给的控制器名称被击中两次。我似乎无法理解为什么会发生这种情况。

考虑两个视图,一个是 Project,另一个是 ProjectRoles。首先,我通过操作链接从项目视图导航到 ProjectRoles 页面。之后,ProjectRoles 视图中还有一个图像链接,现在如果我单击它,则 url 应该在查询字符串的帮助下传递一个参数,但控制器名称出现两次。我哪里做错了?还是在 MVC 中不可能?

我的项目查看代码:

protected string LinkButtonAddPerson(string action, string controllerName, string actionName, long id, long createUser, string status,int projectId)
{
        string link = string.Empty;

        // Controller Name: ProjectRolesController     Action: AddEditProjectRoles
        string querystring = "<a href='../" + controllerName + "/" + actionName + "/?id=" + id + "&status=###status"+ "&projectId="+ projectId + "&veryfirstTime=Y'  ><img id='###ahrefID' src='../../Content/Images/###image'></a>";

        link = querystring.Replace("###status", Constants.Status.Pending).Replace("###image", "addperson.png").Replace("###ahrefID", "addperson");
        //link = querystring.Replace("###status", "P").Replace("###image", "edit.png").Replace("###ahrefID", "edit");
        return link;
 }

ProjectRoles 中的 ImageLinke 按钮:

protected string LinkButton(string action, string controllerName, string actionName, long id, long 
createUser, string status, string firstcall="N")
{
     string link = string.Empty;
     string querystring = "";

     // Controller Name: ProjectRolesController     Action: AddEditProjectRoles
    querystring = "<a href='../" + controllerName + "/" + actionName + "/?id=" + id + "&status=###status'><img id='###ahrefID' src='../../Content/Images/###image'></a>";

    link = querystring.Replace("###status", Constants.Status.Pending).Replace("###image", "edit.png").Replace("###ahrefID", "edit");

    return link;
}

还有我的 AddEditProjectRoles:

 public ActionResult AddEditProjectRoles(int? Id, string status,int projectId, string veryfirstTime="N")
 {
     ... 
     ...
     ...
     // Based on the parameter value, fetching the details. 
 }

【问题讨论】:

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


    【解决方案1】:

    首先,避免使用../../,而是使用~/

    其次,使用Url.Action生成url

    var url = Url.Action(actionName, controllerName, new { id = id });
    

    然后将其用作href

    querystring = $"<a href='{url}" + "&status=###status'><img id='###ahrefID' src='~/Content/Images/###image'></a>";
    

    【讨论】:

      猜你喜欢
      • 2018-09-29
      • 2011-03-11
      • 1970-01-01
      • 1970-01-01
      • 2014-08-16
      • 2013-12-27
      • 2023-03-19
      • 1970-01-01
      • 2016-01-25
      相关资源
      最近更新 更多