MVC控制器名称在URL中出现两次

时间:2019-12-03 07:38:10

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

我有一个图像链接扩展名,用于通过一些计算导航到同一视图。用户从下拉列表中选择一个值并单击链接后,我需要导航至同一视图并传递其选择的值。一切正常,除了要传递给我的控制器名称被击中两次。我似乎无法全神贯注于为什么会这样。

考虑两个视图,一个是Project,另一个是ProjectRoles。首先,我通过“操作”链接从Project View导航到ProjectRoles页面。之后,在ProjectRoles视图中还有一个图像链接,现在,如果单击它,则url应该在querystring的帮助下传递一个参数,但是控制器名称出现两次。我哪里做错了?还是在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. 
 }

1 个答案:

答案 0 :(得分:0)

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

第二,使用Url.Action生成网址

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

然后将其用作href

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