2016-12-23 22 views
0

我partialview:MVC5如何從partialview發佈帖子?

@model Alina_2017.Models.DropDownModel 

<h2>Groepen</h2> 
<div> 


    <div> 
     @using (Html.BeginForm("SelectGroup", "~/Controllers/WerkvormController")) 
     { 
      @Html.DropDownListFor(x => x.selectedItem, new SelectList(ViewBag.groepen, "id", "Naam"), "Select", new { @class = "form-control" }) 
      <input type="submit" id="zoekgroep" value="Zoeken" /> 
     } 
    </div> 
</div> 

我的主視圖:

@model Alina_2017.Models.WerkvormModel 

@{ 
    ViewBag.Title = "Index"; 
} 

@Html.Partial("~/Views/DropDown/Groepen.cshtml") 

//More irrelevant html 

我的控制器:

public ActionResult Index() 
{ 


    ViewBag.groep1 = convertWerkvorm(db.Werkvormens.Where(f => f.GroepenWerkvormID == 1).ToList()); 
    ViewBag.groep2 = convertWerkvorm(db.Werkvormens.Where(f => f.GroepenWerkvormID == 2).ToList()); 
    ViewBag.groep3 = convertWerkvorm(db.Werkvormens.Where(f => f.GroepenWerkvormID == 3).ToList()); 
    setViewBags(); 
    return View(); 
} 

[HttpPost] 
public ActionResult SelectGroup(DropDownModel model) 
{ 
    // the value is received in the controller. 
    var selectedItem = model.selectedItem; 
    Debug.WriteLine(selectedItem); 
    return View("Index"); 
} 

我得到一個HTTP錯誤404.0 - 未找到。是否有可能從不同的控制器調用一個動作?它在局部視圖中的原因是因爲我使用了兩個不同的模型+我將在多個其他視圖中使用partialview(至少一次我使用它)。

回答

1

您的控制器名稱錯誤。

更換

@using (Html.BeginForm("SelectGroup", "~/Controllers/WerkvormController")) 

@using (Html.BeginForm("SelectGroup", "Werkvorm")) 

您可以驗證實際帖子的網址,如果你在瀏覽器中查看源,或在瀏覽器的開發工具檢查網絡選項卡。

+0

謝謝!我其實首先嚐試了,但是把WerkvormController而不是Werkvorm,因此我使用了完整的路徑。它現在是有道理的,謝謝:) – user3117628

2

的第二個參數BeginForm()的方法不外乎名控制器,而不是它的文件:

@using (Html.BeginForm("SelectGroup", "Werkvorm")) 
{ 

} 

您可以張貼到任何服務器端的操作,從任何地方。基於視圖的呈現方式沒有限制,因爲一旦呈現了所有內容,無論它來自哪裏,都只是客戶端標記。

作爲一種學習練習,請查看瀏覽器調試工具中的實際呈現標記,並查看爲這些表單創建的URL。無論部分視圖如何排列,哪個控制器返回視圖,模型是什麼等等,最終都只是HTML。您甚至可以手動編寫一個簡單的.html文件,其中包含一個成功發佈到服務器端ASP.NET MVC操作的表單。

+0

感謝您的回覆,一定會檢查出來! – user3117628