1

ASP.NET MVC3 Web サイトを初めて開発しています。私の開発マシンでは、すべて正常に動作します。

テスト マシンにすべてをビン デプロイしました。いくつかの DLL が見つからない問題の後、Web サイトは次の URL で動作しているように見えました。

http://localhost/Test%20Website

しかし、次のリンクをクリックしたとき (質問とは関係のない Infragistics Grid を使用しているため、インライン JavaScript によって作成されます):

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

物理パスが C:\inetpub\wwwroot\Patient\Edit\537 であるため、論理的な HTTP エラー 404.0 - Not Found が表示されます。

物理パスは次のようにする必要があります: C:\inetpub\wwwroot\Test Website\Views\Patient\Edit\537 (少なくとも... MVC ルーティングが正確にどのように機能するか理解していないと思います)

ちなみに、ActionLink HTML ヘルパーなどを使用して作成されたリンクは正常に機能します。したがって、これは機能します: @Html.ActionLink("About", "About", "Home") そして、これは機能します: @Html.Partial("Search", new SearchModel())

それで、私の質問は、これらの問題をどのように解決しますか?

ps: リソース内のすべての画像も機能しません。はぁ

回答後の更新

申し訳ありませんが、これは 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/etc の知識が限られているため、解決方法がわかりません...助けていただけますか? この場合の 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");
})

お役に立てれば。

4

2 に答える 2

0

これを試して:

<a href ="Url.Action("Edit", "Patient", new { id = val })" />
于 2013-04-23T10:32:00.100 に答える