2009-08-06 26 views
2

コントローラはどのビューを返すべきかをどのように知っていますか?私は命名規則によると思っていましたが、名前が一致しないNerd Dinnerアプリケーションなどのインスタンスが見られました。このマッピングはどこにどのように表示されますか?ありがとう。あなただけのビューを()戻ったら...かなりそれだasp.net mvc - ビューとコントローラ

Views/Employees/CustomerName.aspx 
Views/Employees/CustomerName.ascx 
Views/Shared/CustomerName.aspx 
Views/Shared/CustomerName.ascx 

を;:

答えて

6
public class EmployeesController 
{ 
    public ViewResult Index() 
    { 
     return View("CustomerName"); 
    } 
} 

は検索します名前を指定せずに、controlleractionと同じ名前のビューを検索しました。この場合、Index.aspx

+0

View()に渡すパラメータは、それが検索する名前であることを意味していますか?また、コントローラに特定の領域のビューを探すように指示する方法はありますか? – Crios

+0

パラメータはビューの名前です。 CustomerName = CustomerName.aspx。私が知る限り、mvcが表示される場所はハードコードされていますが、カスタマイズしてViewEngineを開発することができます。 ViewEngines.Engines.Add(新しいMyCusyomViewEngine()); //Global.asax.cs –

+0

実際にはデフォルトのビューエンジンで位置がハードコードされています。 パラメータは実際にはビューの名前です。ビューの名前を指定するのがベストプラクティスと見なされます。これは、ユニットテストを行うことができるためです。 –

0

コントローラ内のアクションの名前に基づいています。ここに例があります:

私はUserControllerという名前のコントローラを持っています。

そのコントローラでの自分の行動の1つが「インデックス」です。

返信すると、View();

それはIndex.aspxまたはIndex.ascx

また、共有フォルダになりますため、ユーザーフォルダ内に、ビューのディレクトリになります。

2

ビュー名を指定する方法は3つあります。慣例により

アクションメソッドの名前のビューを探します

public ActionResult MyAction { 
    return View() 
} 

、別名 "MyAction.ascx" または "MyAction.aspx" 名前で

** * *

public ActionResult MyAction { 
    return View("MyViewName") 
} 

"MyViewName.ascx"または "MyViewName.aspx"という名前のビューが検索されます。アプリケーションパスで

** **

public ActionResult MyAction { 
    return View("~/AnyFolder/MyViewName.ascx") 
} 

この最後のものはこれだけの場所、あなたが指定した場所に見えます。