我的项目有一个固定的链接
链接:域/控制器/名字 - 姓氏/
其中Url_name ='firstname-lastname'是一个参数,这就是我必须使用属性路由来隐藏URL中的操作的原因。
该列表来自第1页,并且有一个不同用户的链接列表
<a class="artist" id=' + data.Id + ' href="Contr/' + data.Url_name + '">' NAME </a>
1.domain /控制器/ FIRSTNAME1-姓氏/
2.domain /控制器/ FIRSTNAME2-姓氏/
.....
然后,当用户单击链接系统时,将仅使用Url_name转到第二页(第2页)。
[Route("Contr/{name}")]
public ActionResult Index(string name)
{
return View();
}
此时视图将在Javascript中加载它们,我试图从URL中取名称
var url = document.URL;
var lastChar = url[url.length - 1];
var name;
var splittedStr = url.split('/');
if (lastChar !== "/")
{
name = splittedStr[splittedStr.length - 1];
}
else
{
name = splittedStr[splittedStr.length - 2];
}
然后我通过ajax(脚本端)调用另一个动作来获取要显示的数据。
var url = "GetData/" + name + "/" + artistId + "/" + direction + "";
$.ajax({
url: url,
type: "GET",
dataType: 'json',
// data: { artistId: artistId, 'direction': 'none' },
contentType: 'application/json; charset=utf-8',
success: function (data) {
$("#hidId").val(data.Id);
$("#aName").html(data.Vorname + " " + data.Name);
//and so on.
}
});
控制器中的相应Action是
[Route("Contr/GetData/{name?}/{aId:int?}/{direction?}")]
public ActionResult GetData(string name,int? aId, string direction)
{
//searcing code for coming paraeter
}
我的问题是,在链接中如果尾部没有斜杠(“/”)则一切正常。但是,如果有,那么这个呼叫就像现在的网址一样
域/控制器/ FIRSTNAME1-姓氏/的GetData /名称/ 0 /无
并且它不会在控制器中调用GetData操作。任何人都可以帮助这种情况??
我不知道它是否正确,但我通过重置URL没有斜杠(“/”)>解决了这个问题
window.location = url.substr(0, url.length-1);
据我所知,如果有斜杠(“/”),那么它等待下一个字符串附加属性路由。那是问题!!!