2013-02-08 97 views
0

使用MVC模式說我有一個視圖和控制器:MVC - 查看變量?

Controller 
    User 

View 
    User 
    login 
    logout 
    dashboard 

用戶控制器具有以下操作:

loginAction 
logoutAction 
dashboardAction 

登錄視圖有一個簡單的登錄表單,現在我的問題:

表單應該從哪裏獲取其操作url?

如果這在視圖中硬編碼,例如:

<form action="/post.php" method="post"> 

它似乎不正確的,因爲控制器應該告訴視圖,所以還有什麼地方,這可能去了?

+0

你爲什麼模板混淆視圖? – 2013-02-08 22:52:22

+0

我沒跟着你抱歉 – 2013-02-09 00:19:48

+0

是的。這是問題的一部分。正確的MVC中的視圖是UI邏輯所在的位置。他們從模型**層獲取信息**,並根據該信息決定如何呈現它(有時通過在HTML輸出中組合多個模板)。你有什麼只是[模板](http://codeangel.org/articles/simple-php-template-engine.html),你稱之爲「意見」。 – 2013-02-09 00:46:41

回答

0

控制器告訴視圖它需要的一切,視圖顯示它。該視圖不知道控制器。

@using (Html.BeginForm("Login", "Account", FormMethod.Post, new { @class = "form-signin", ReturnUrl = ViewBag.ReturnUrl })) 
{ 
    @Html.AntiForgeryToken() 
    @Html.ValidationSummary(true) 

    <h2 class="form-signin-heading">Please sign in</h2>    
    <br /> 
    @Html.TextBoxFor(m => m.UserName, new { @class = "input", type = "text", placeholder = "Username" })  
    <br /> 
    @Html.PasswordFor(m => m.Password, new { @class = "input", type = "password", placeholder = "Password" }); 
    <br /><br /> 
    <button type="submit">Sign in</button>    
} 

在該登錄表單,鏈接到該方法在控制器上是(「登錄」,「帳戶」),其中「登錄」是方法名和「帳戶」是控制器的名稱。