我正在第一次开发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");
})
希望这会有所帮助。
的波浪难道不上的第一个例子工作,但第二个是精... – Steve 2013-04-23 10:25:51
真的,我编辑答案。 – Egor4eg 2013-04-23 10:29:53
首先,非常感谢您的回答。我现在在这几个小时。第二,看起来很重要的是它是一个内联的JavaScript函数,它是一个字符串,所以我更新了我的问题。希望你能帮助。请在底部查看更新的问题。 – 2013-04-23 12:38:12