2013-04-23 43 views
1

我正在第一次開發ASP.NET MVC3網站。在我的開發機器上一切正常。ASP.NET MVC:測試服務器上的路由錯誤

我bin在我們的測試機器上部署了所有東西。經過一番缺少DLL發出的網站似乎在以下網址工作:

http://localhost/Test%20Website 

但是當我點擊以下鏈接(這是由內嵌的JavaScript,因爲我使用的Infragistics網格創建這是不相關的問題):

<a href=\"/Patient/Edit/' + val + '\"><img src=\"../Resources/Edit.png\" align=\"left \"></a> 

我得到HTTP錯誤404.0 - 未找到,這是合乎邏輯的,因爲物理路徑:C:\的Inetpub \ wwwroot的\耐心\編輯\ 537

雖然物理路徑應該是:C:\ inetpub \ wwwroot \ Test Website \ Views \ Patient \ Edit \ 537(atleast ......我想......不明白MVC路由是怎麼工作的)

這是通過使用ActionLink的HTML幫助和這樣的做工精細的方式進行的鏈接。 所以此工程: @ Html.ActionLink( 「關於」, 「關於」, 「主頁」) 而這個作品: @ Html.Partial( 「搜索」,新SearchModel())

所以,我的問題是,你如何解決這些問題?

P.S:在資源所有的圖像都不能工作。 答案

對不起後感嘆

UPDATE,apparantly需要注意的是這發生在一個javascript函數作爲字符串是很重要的。這是因爲我使用了Infragistic的JQuery網格中的FormatterFunction。好吧,這是我到目前爲止:

"function(val) {return '<a href=\"" + @Url.Content("~/Patient/Edit/" + val) + "\"><img src=\"../Resources/Edit.png\" align=\"left\"></a>'; }" 

名稱'val'在當前上下文中不存在,這是邏輯的。但我不知道如何解決這個問題,因爲我對javascript/Razor /等的知識有限......請幫忙嗎?在這種情況下,Val就是它所綁定列的值。在這種情況下,患者的ID。

Ego4eg要求更多的代碼

它的Infragistics JQuery的網格。這個網格有一個FormatterFunction,它有一個字符串作爲參數。這個字符串需要是一個javascript函數。給你一個想法,這看起來像這樣:

@(Html.Infragistics() 
.Grid(Model) 
.ID("grid1") 
.AutoGenerateColumns(false) 
.Columns(column => { 
    //column.For(p => p.ID).FormatterFunction("function(val) {return '<a href=\"/Patient/Edit/' + val + '\"><img src=\"../Resources/Edit.png\" align=\"left\"></a>'; }").Width("25px").HeaderText(" "); 
    column.For(p => p.ID).FormatterFunction("function(val) {return '<a href=\"" + @Url.Action("Edit", "Patient", new { id = val }) + "\"><img src=\"../Resources/Edit.png\" align=\"left\"></a>'; }").Width("25px").HeaderText(" "); 
    column.For(p => p.ID).FormatterFunction("function(val) {return '<a href=\"/Home/CreateRemark/?patientID=' + val + '\"><img src=\"../Resources/add.png\" align=\"left\"></a>'; }").Width("25px").HeaderText(" "); 
    column.For(p => p.FullName).DataType("string").HeaderText("Naam").Width("250px"); 
    column.For(p => p.Address).DataType("string").HeaderText("Adres").Width("400px"); 
    column.For(p => p.BSN).DataType("string").HeaderText("BSN").Width("85px"); 
    column.For(p => p.DateOfBirthAsString).DataType("string").HeaderText("Geboortedatum").Width("85px"); 
    column.For(p => p.GeneralPractitionerName).DataType("string").HeaderText("Huisarts"); 
}) 

希望這會有所幫助。

回答

1

這將是更好地使用Url.Content像:

<a href=\"@Url.Content("~/Patient/Edit/" + val)\"> 
+0

的波浪難道不上的第一個例子工作,但第二個是精... – Steve 2013-04-23 10:25:51

+0

真的,我編輯答案。 – Egor4eg 2013-04-23 10:29:53

+0

首先,非常感謝您的回答。我現在在這幾個小時。第二,看起來很重要的是它是一個內聯的JavaScript函數,它是一個字符串,所以我更新了我的問題。希望你能幫助。請在底部查看更新的問題。 – 2013-04-23 12:38:12

0

試試這個:

<a href ="Url.Action("Edit", "Patient", new { id = val })" /> 
+0

首先,非常感謝您的回覆。最後你的回答也很好。但Egor4eg幫助我得出了最終結論,所以他值得信任。 – 2013-04-24 08:24:17