0

コードに問題があります:

  • cshtmlファイルからの引数を使用してアクションにリダイレクトします
  • しかし、URLがファイルAdmin cshtmlに見つかりません:

    @{ Layout = "~/Views/Shared/_General.cshtml";
    }
    <table>
        <tr>
            <td><label  title= "Name " runat="server">Name</label></td>
            <td><label  title= "Email " runat="server">Email</label></td>
            <td><label  title= "Password" runat="server">Password</label></td>
            <td><label  title= "Phone" runat="server">Phone</label></td>
        </tr>
    
        @foreach (var marker in @Model)
        {
            <tr>
                 <td><label  title= "Nom " runat="server" >@marker.ContactName</label>/td>
                 <td><label  title= "mail " runat="server">@marker.ContactEmail</label>/td>
                 <td><label  title= "mot " runat="server" >@marker.Password</label>/td>
                 <td><label  title= "phone " runat="server" >@marker.ContactPhone</label></td>
                 <td><label  id="id" style="visibility:hidden">@marker.Identification</label></td>
                 <td>@Html.ActionLink("Edit", "Edit", new { Identification = @marker.Identification }) | @Html.ActionLink("Delete", "Delete", "Administration")</td>  
            </tr>
        }
    </table>
    <p>
        @Html.ActionLink("Create New", "Create")
    </p>
    

私の行動はこれです:

[HttpPost]
public ActionResult Edit(string Identification)
{
    DATA2.User u = c.GetUserById(Identification);
    return View(u);
}

このコードを修正するにはどうすればよいですか?

4

1 に答える 1

0

あなたのコードを見るときに最初に私を襲うのはですrunat="server"。ASP.NETMVCにはそのようなものはありません。使用したすべての場所から取り外してください。

私があなたのコードで見ることができる1つの問題は、あなたがあなたのコントローラーアクションを[HttpPost]属性で装飾したという事実です。<a>ActionLinkを定義すると、アンカータグ( )が生成され、サーバーにGETリクエストが送信されることを忘れないでください。コントローラアクションを[HttpPost]属性で装飾すると、基本的に、このアクションはPOSTHTTP動詞でのみ呼び出すことができると言います。ActionLinkからアクションにアクセスできるようにする場合は、次の属性を削除する必要があります。

public ActionResult Edit(string Identification)
{
    DATA2.User u = c.GetUserById(Identification);
    return View(u);
}

次に、編集リンクに焦点を当てる必要があると思います。

@Html.ActionLink("Edit", "Edit", new { Identification = marker.Identification })

編集アクションが見つからないとおっしゃっていますね。この場合、コントローラーのアクションとエリア(このコントローラーがエリア内にある場合)を指定することもできます。

@Html.ActionLink(
    "Edit", 
    "Edit", 
    "SomeContorller", 
    new { Identification = "marker.Identification" }, 
    null
)

これは、到達しようとしているコントローラーアクションが、ビューのレンダリングに使用されたのと同じコントローラー内で定義されていない場合に必要です。

于 2012-09-20T12:38:26.353 に答える