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