我的部分观点:
@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 - 未找到。是否可以从不同的控制器调用操作?它在部分视图中的原因是因为我使用了两个不同的模型+我将在多个其他视图中使用部分视图(至少一次我可以使用它)。
答案 0 :(得分:2)
您的控制器名称错误。
替换
@using (Html.BeginForm("SelectGroup", "~/Controllers/WerkvormController"))
与
@using (Html.BeginForm("SelectGroup", "Werkvorm"))
如果您在浏览器中查看源代码,则可以验证实际的帖子URL,或者在浏览器的开发工具中查看网络选项卡。
答案 1 :(得分:2)
do.call(c,
Map(function(x,y) lapply(x, function(dat)
merge(dat, y, all.y = TRUE)),
split(data_list, rep(seq_along(vec), vec)),
data_list1))
方法的第二个参数只是控制器的名称,而不是其文件:
BeginForm()
您可以从任何地方发布到任何服务器端操作。根据视图的呈现方式没有限制,因为一旦呈现所有内容,无论它来自何处,它都只是客户端标记。
作为学习练习,请在浏览器的调试工具中检查实际呈现的标记,并查看为表单创建的URL。无论部分视图如何排列,哪个控制器返回视图,模型是什么等等......最后只是HTML。您甚至可以手动编写一个带有表单的简单@using (Html.BeginForm("SelectGroup", "Werkvorm"))
{
}
文件,该文件成功发布到服务器端的ASP.NET MVC操作。