如何修复MVC属性路由中的结束斜杠“/”问题?

问题描述 投票:1回答:1

我的项目有一个固定的链接

链接:域/控制器/名字 - 姓氏/

其中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操作。任何人都可以帮助这种情况??

c# asp.net model-view-controller attributerouting
1个回答
0
投票

我不知道它是否正确,但我通过重置URL没有斜杠(“/”)>解决了这个问题

window.location = url.substr(0, url.length-1);

据我所知,如果有斜杠(“/”),那么它等待下一个字符串附加属性路由。那是问题!!!

© www.soinside.com 2019 - 2024. All rights reserved.