2017-01-11 5 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

'вернуться View ("Index");' в обоих методах POST –

+0

При использовании 'вид возврата();' контроллер автоматически ищет точки зрения с тем же name как действие, поэтому он ищет в папке views для 'foobar.cshtml', которая, вероятно, не существует. Как уже упоминалось, если вы добавите параметр имени вида, действие 'foobar' вернет представление индекса. – Jake

+0

Спасибо! return View («Index») работает в этом примере. Это, очевидно, простой тест, позвольте мне попробовать это с моей реальной базой на основе модели и посмотреть, как она работает. –

ответ

1

Я надеюсь, что это поможет:

[HttpPost, ActionName("Index")] 
public ActionResult IndexPost() 
{ 
    return View("Index"); 
} 
[HttpPost] 
public ActionResult foobar() 
{ 
    return View("Index"); 
} 
Смежные вопросы