2017-02-10 2 views
1

コントローラに2つの質問があります。コントローラー名が@ html.actionlinkコントロールで指定されていない場合、コントローラーはどのコントローラーを使用しますか?

  1. 私は以下のサンプルコードを見て、このアクションリンクがどのコントローラを呼び出すのか不思議です。削除は実際にはアクションメソッドです。 2つのコントローラが同じアクションメソッド名 "Delete"を持っていたらどうなりますか?

    @Html.ActionLink("Delete", "Delete", new { id=item.ID })

  2. 何のコントローラ名やアクションメソッドがコントローラーとアクションメソッドはそれがかかります以下のコードのような送信ボタン要素に言及されていない場合は?

    <input type="submit" value="Create" />

答えて

3

私はそれが第一1の一部である引き起こし、最初の2回目の質問にお答えします:あなたは、コントローラを指定しない場合は、それが現在使用されます)

2 1つ(部分的な見方では、要求の瞬間に「行動している」コントローラを使用する)。

1)コントローラは、現在のコントローラーと異なるコントローラーをリンクする必要がある場合に、同じアクション名を持つことができます。

[編集]

あなたの第二の質問は送信ボタンがフォームの「アクション」値を使用しているとして、あなたはそれを制御することができます...ので、私は私の答えを更新

を変更しました:

@using (Html.BeginForm("ActionName", "ControllerName")) 
{ 
    ... 
    <input type="submit" value="Create" /> 
} 
htmlタグと

または直接

<form action="@Url.Action("ActionName", "ControllerName")" method="POST"> 

またコントローラを省略または/および交流することができます現在のパラメータを使用してPOSTする場合は、パラメータを設定します。

+0

2)質問の答え:現在のコントローラと、入力HTMLコントロールを含むこのビューを返したアクションメソッドが必要ですか?私はbeginformメソッドを知っていて、質問に記載されているようなコントローラ/アクションがコードに含まれていなければ私の質問はどうなるでしょう。また、私は質問1)それはコントローラ名がない場合は、現在のビューを返すコントローラ名を取ると信じています。 – Karthik

+0

はい、つまり、パラメータをまったく指定しないと、現在のコントローラと動作(電流出力を生成しています)が発生します。これは、ActionLink(ActionName必須パラメーターを持つ)以外のすべてのMVCヘルパーに当てはまります。 – Seididieci

関連する問題