2013-08-28 34 views
0

我熟悉如何通過jQuery傳遞數據到我的ASP.NET MVC控制器,但我今天寫了一些代碼,並且發現了一個我不能相當的有趣URL弄清楚如何格式化......通過jQuery傳遞URL的尷尬路由

路線讀這樣的事情...

/////////////////////////////////////////// 
// route: /member/{0}/characters 
/////////////////////////////////////////// 
public ActionResult Characters(int member){ 
// get the list of the member's characters 
} 

所以,URL實際上有「參數」正中間。這對我很好奇,因爲我不確定這是如何轉化爲$.ajax上的jQuery「data」屬性的。我通常會這樣設置它....

$.ajax({ 
    url: '/member/characters', 
    dataType: 'json', 
    data: { member: 1 } 
}).done(function (data) { viewModel.set("Player", data); }); 

但這似乎無法在這種情況下工作。我想我可以做一些很做作字符串格式化,但是我希望能更清晰地做到這一點有點...

沒有人有處理多路這樣的建議嗎?

+0

你不應該只是通過查詢字符串中的數據? 'url:'/ member/1/characters','而不發送數據?這只是一個請求... –

回答

0

您將無法使用data參數,因爲它只設置查詢字符串屬性。你的價值實際上是路徑的一部分,所以你需要做一些不同的事情。嘗試使用@Url.Action生成正確的URL,並省略參數data

$.ajax({ 
    url: '@Url.Action("Characters", "Member", new { member = 1 })', 
}).done(function (data) { viewModel.set("Player", data); }); 

如果您的會員ID是從javascript中動態選擇的,這將不起作用。

爲了做到這一點,你必須手動創建您的網址:

var url = '/member/' + memberId + '/characters'; 
+0

是的,我想到了很多。我希望有一個更聰明的方法來做到這一點,但似乎hokey字符串是唯一的解決方案。感謝您的時間。 – Ciel