2017-01-11 54 views
0

我有我希望的是一個簡單的問題。我試圖在MVC視圖上使用多個窗體(如Multiple Forms in same page ASP.net MVC) - 每個窗體在同一個控制器上調用不同的操作。我的問題是,任何形式,我稱之爲命名不同的行動,我看到一個錯誤。下面簡單的例子:MVC視圖上的多種形式

Index.cshtml

@using (Html.BeginForm("index", null, FormMethod.Post, new { @class = "form -horizontal" })) 
{ 
    <button class="btn btn-primary" type="submit">index</button> 
} 
<br /> 
@using (Html.BeginForm("foobar", null, FormMethod.Post, new { @class = "form -horizontal" })) 
{ 
    <button class="btn btn-primary" type="submit">foobar</button> 
} 

的TestController

public class testController : Controller 
{ 
    // GET: test 
    public ActionResult Index() 
    { 
     return View(); 
    } 
    [HttpPost, ActionName("Index")] 
    public ActionResult IndexPost() 
    { 
     return View(); 
    } 
    [HttpPost] 
    public ActionResult foobar() 
    { 
     return View(); 
    } 

點擊 「索引」 按鈕作品(什麼都不做) 點擊 「FOOBAR」 按鈕拋出一個錯誤

The view 'foobar' or its master was not found or no view engine supports the searched locations. 

我明顯失去了一些東西 - 任何智慧是讚賞

+0

'返回視圖(「指數」);'兩個POST方法 –

+0

當使用'返回視圖();'控制器自動查找具有相同的景色名稱作爲動作,所以它正在查看'foobar.cshtml'這個可能不存在的視圖文件夾。如上所述,如果添加視圖名稱參數,foobar操作將返回索引視圖。 – Jake

+0

謝謝!返回視圖(「索引」)在這個例子中工作..這顯然是一個簡單的測試,讓我試試這與我真正的基於模型的東西,看看它是如何工作的。 –

回答

1

我希望這將有助於:

[HttpPost, ActionName("Index")] 
public ActionResult IndexPost() 
{ 
    return View("Index"); 
} 
[HttpPost] 
public ActionResult foobar() 
{ 
    return View("Index"); 
}